70


7

Rubyでセミコロンを使用できますか?

Rubyを学習するとき、すべての例にセミコロンがないことに気付きました。 各ステートメントが独自の行にある限り、これは完全に問題ないことを認識しています。 しかし、私が疑問に思っているのは、Rubyでセミコロンを使用できますか?

前もって感謝します!

6 Answer


92


Yes.

_ Rubyでは、1行に複数のステートメントを連結する場合を除き、コマンドを区切るために文字を使用する必要はありません。 この場合、セミコロン(;)が区切り文字として使用されます。 _

ソース:http://articles.sitepoint.com/article/learn-ruby-on-rails/2


28


サイドノートとして、(j)irbセッションでセミコロンを使用すると、とてつもなく長い式の値が出力されないようにするのに役立ちます。

irb[0]> x = (1..1000000000).to_a
[printout out the whole array]

vs

irb[0]> x = (1..100000000).to_a; nil

特にMyBigORMObject.find_all呼び出しに最適です。


5


セミコロン:はい。

irb(main):018:0> x = 1; c = 0
=> 0
irb(main):019:0> x
=> 1
irb(main):020:0> c
=> 0

ワンライナーループでセミコロンで区切られた複数のコマンドを実行することもできます

irb(main):021:0> (c += x; x += 1) while x < 10
=> nil
irb(main):022:0> x
=> 10
irb(main):023:0> c
=> 45


3


私が遭遇したセミコロンが役に立つという唯一の状況は、attr_readerのエイリアスメソッドを宣言するときです。

次のコードを見てください。

attr_reader :property1_enabled
attr_reader :property2_enabled
attr_reader :property3_enabled

alias_method :property1_enabled?, :property1_enabled
alias_method :property2_enabled?, :property2_enabled
alias_method :property3_enabled?, :property3_enabled

セミコロンを使用することで、これを3行減らすことができます。

attr_reader :property1_enabled; alias_method :property1_enabled?, :property1_enabled
attr_reader :property2_enabled; alias_method :property2_enabled?, :property2_enabled
attr_reader :property3_enabled; alias_method :property3_enabled?, :property3_enabled

私にとって、これは読みやすさを損なうものではありません。


2


はい、セミコロンはRubyのステートメント区切り文字として使用できます。

私の典型的なスタイル(および私が見る_most_コード)は各行にコードの行を配置しますが、 `;`の使用はかなり不要です。


0


この例のように、ブロック構文を保持するためにセミコロンを使用すると興味深い場合があります。

a = [2, 3 , 1, 2, 3].reduce(Hash.new(0)) { |h, num| h[num] += 1; h }

1行のコードを保守します。