るりまサーチ

最速Rubyリファレンスマニュアル検索!
29件ヒット [1-29件を表示] (0.060秒)
トップページ > クエリ:p[x] > クエリ:NoMatchingPatternError[x]

別のキーワード

  1. openssl p
  2. openssl p=
  3. fileutils mkdir_p
  4. kernel p
  5. _builtin p

種類

ライブラリ

検索結果

NoMatchingPatternError (44000.0)

パターンマッチでどの条件にも一致せず、else節もない場合に発生します。

パターンマッチでどの条件にも一致せず、else節もない場合に発生します。

パターンマッチ (3006.0)

パターンマッチ * patterns * variable_binding * variable_pinning * matching_non_primitive_objects * guard_clauses * current_feature_status * pattern_syntax * some_undefined_behavior_examples

...パターンマッチ
* patterns
* variable_binding
* variable_pinning
* matching_non_primitive_objects
* guard_clauses
* current_feature_status
* pattern_syntax
* some_undefined_behavior_examples

パターンマッチは、構造化された値に対して、構造をチェック...
...ッチは in 演算子を用いて実装されており、単体の式や

<expression> in <pattern>

case 文の中で利用できます。

case <expression>
in <pattern1>
...
in <pattern2>
...
in <pattern3>
...
else
...
end

in 節と when 節は1つの case 式の...
...もマッチせず else 節がない場合、例外 NoMatchingPatternError が発生します。

そのため、条件付きのマッチや展開に case 式が使われることがあります。

//emlist[][ruby]{
config = {db: {user: 'admin', password: 'abc123'}}

case config
in db: {user:} #...
...<expression>
in <pattern1>
...
in <pattern2>
...
in <pattern3>
...
else
...
end

in 節と when 節は1つの case 式の中に混ぜて書くことはできません。

『=>』 演算子と in 演算子で、単体の式で使用することも可能です。

<expres...
...sion> => <pattern>

<expression> in <pattern>

case/in 式は 「網羅的」 です。もし case 式の値がどの節にもマッチせず else 節がない場合、例外 NoMatchingPatternError が発生します。

そのため、条件付きのマッチや展開に case 式が使われる...

NEWS for Ruby 2.7.0 (96.0)

NEWS for Ruby 2.7.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...3]]
in [a, [b, *c]]
p
a #=> 0
p
b #=> 1
p
c #=> [2, 3]
end
//}

//emlist[][ruby]{
case {a: 0, b: 1}
in {a: 0, x: 1}
:unreachable
in {a: 0, b: var}
p
var #=> 1
end
//}

//emlist[][ruby]{
case -1
in 0 then :unreachable
in 1 then :unreachable
end #=> NoMatchingPatternError
//}

//emlist{
jso...
....parse(json, symbolize_names: true) in {name: "Alice", children: [{name: name, age: age}]}

p
name #=> "Bob"
p
age #=> 2

JSON.parse(json, symbolize_names: true) in {name: "Alice", children: [{name: "Charlie", age: age}]}
#=> NoMatchingPatternError
//}

* 詳細は https://speakerdeck.com/k_tsj/p...
...* スライドは少し古い内容になっていることに注意してください。

* パターンマッチに対する警告は「-W:no-experimental」オプションで抑制できます。

==== 3.0 に向けてのキーワード引数の仕様変更

* キーワード引数と位置...

NEWS for Ruby 3.0.0 (48.0)

NEWS for Ruby 3.0.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...separated from positional arguments.
Code that resulted in deprecation warnings in Ruby 2.7 will now
result in ArgumentError or different behavior. 14183
* Procs accepting a single rest argument and keywords are no longer
subject to autosplatting. This now matches the behavior of Pro...
...cepting a single rest argument and no keywords.
16166

//emlist[][ruby]{
p
r = proc{|*a, **kw| [a, kw]}

p
r.call([1])
# 2.7 => [[1], {}]
# 3.0 => [[[1]], {}]

p
r.call([1, {a: 1}])
# 2.7 => [[1], {:a=>1}] # and deprecation warning
# 3.0 => a=>1}, {}]
//}

* Arguments forwarding (`...`) now suppo...
...a
p
a #=> 0

{b: 0, c: 1} => {b:}
p
b #=> 0
//}

//emlist{
# version 3.0
0 in 1 #=> false

# version 2.7
0 in 1 #=> raise NoMatchingPatternError
//}

* Find-pattern is added. [EXPERIMENTAL]
16828

//emlist{
case ["a", 1, "b", "c", 2, "d", "e", "f", 3]
in [*pre, String => x, String => y, *pos...