蒸留されたスクリプトは次のとおりです。
z1 = (12 -
2) / (5)
z2 = (12
- 2) / (5)
puts(z1.to_s + " " + z2.to_s)
それは与える:
$ ruby rubytest.rb
2 -1
z1
行の終わりにぶら下がっている演算子は、行の自動継続として解釈されるため、この場合が正しい方法であることがわかりました。
しかし、私は通訳がそのz2
事件で失敗することを期待し、ステートメントが不完全であるか、その2行目が無意味であると私に言います。しかし、それは「問題なく」処理し、「-1」の答えを出します。混乱していることを認めず、でたらめな答えが見過ごされることを期待して、自信を持って見せようとしているのでしょうか。
誰かがの評価で実際に何が起こっているのz2
か、なぜそれが「-1」なのか、なぜ構文エラーがないのか、そしてこの動作が役立つ例がありますか(またはそれを削除するリクエストを提出する必要があります)?
これは機能ですが、最初はバグだと思われるかもしれません。それはあなたがこれを行うことができるのと同じ理由です(これは多くの場合便利です):
(call_function_1; call_function_2) if some_condition
改行はと同じように解釈され;
ます。たとえば、これは正常に評価され、最後の式のみが返されますが、それでもすべての式が評価されます。
(1
2
3
4
5)
=> 5
それはと同じです
(1; 2; 3; 4; 5)
=> 5
すべての式が評価されていることを確認するには、次の例を試してください。
(puts "A"
puts "B"
puts "C"
123)
A
B
C
=> 123
したがって、あなたの例は次のようになります。
(12; -2) / 5
これは次と同じです:
-2 / 5
これは-1
です。
Rubyを12
個別のステートメントではなく未完成のステートメントとして解釈させるには、行継続のヒントを追加することで、Rubyにこれを伝えることができます\
。
(12 \
- 2) / 5
=> 2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加