32

この演算子は HAML コードで見ました。何のためにあるのかしら。

以下の作品を見ています。

> ?{
=> "{" 
> ?\s
=> " " 
> ?a
=> "a" 

そして、これは機能しません:

> ?ab
SyntaxError: (irb):4: syntax error, unexpected '?'

したがって、文字を引数に取り、その文字を含む文字列を返すと思います。

質問:

  1. このオペレーターは何をしますか?
  2. いつ使用する必要がありますか?
  3. それが実際に 1 文字の文字列しか作成しない場合、なぜそれが言語に含まれたのでしょうか? 言語の直交性を壊していませんか? メリットは何ですか?
4

4 に答える 4

29

単一の文字列を返します。1 文字の文字列リテラルを記述する最短の方法です。1文字の文字列を多く定義したい場合に使用します。これは Ruby <1.9 からの遺産であり、その文字の ASCII コードを返すために使用されていました。「言語の直交性を破る」という意味がわかりません。

于 2013-05-20T01:13:21.740 に答える
2

#2に関して、私が設定しているパラメーターまたはテストしている値が単一の文字であることを意図しており、これがたまたま短い文字列であったことを伝えるのに役立つことがわかった場所. これは微妙な読みやすさ/ドキュメントの問題ですが、後のメンテナー (私を含む) のために検討する価値があります。

于 2014-03-10T16:20:53.203 に答える
-2

「?」ruby メソッドのマークは、メソッドが true または false を返すことを示します。

メソッド名を確認すると、このメソッドがブール値を返すことがわかります。

例:

空の?- このメソッドは、オブジェクトが空かどうかをチェックします。それに応じて、true または false を返します。

用途:

[1,2,3].空? - false を返す

[]。空の?- 真を返す

于 2019-11-11T10:22:55.180 に答える