1

if ステートメントが機能せず、何か助けが得られるかどうか疑問に思っていました。「FnPrint」と入力すると、if ステートメントが機能しません。

puts "hi"
g = gets()
# Class for print command
x = "FnPrint"
class Fnprint
  def Print
    if x = g
      puts "it worked"
    else
      puts "no"
    end
  end
end

Fnprint.new.Print

実行しようとすると、これを取得し続けました:

lang.rb:9:in `Print': undefined local variable or method `g' for #<Fnprint:0x007f9379939040> (NameError)
from lang.rb:17:in `<main>'
4

5 に答える 5

1

以下を使用してください。

if x == g

あなたがするとき

if x = g

gの値をtoに代入するように ruby​​ に指示するだけですx

Printまた、メソッド スコープ外の変数にアクセスしようとしています。次のようにコードをリファクタリングすることを検討してください。

class FnPrint
  def print(x)
    if x == gets().strip
      puts "it worked"
    else
      puts "no"
    end
  end
end

puts "hi"
FnPrint.new.print('FnPrint')

理解すべき点をいくつか:

  1. String#strip先頭と末尾の空白を削除します。
  2. メソッド名は小文字にする必要があります
  3. クラス名はキャメルケースにする必要があります ( FnPrint, FooBar, Foo, ...)
  4. printクラスのインスタンスメソッドですFnPrint
  5. FnPrint.newクラスの新しいインスタンスを作成して、それFnPrintを呼び出すことができますprint
于 2013-10-29T09:37:04.163 に答える
0
if x = g #=> is Assignment
if x == g #=> is Comparison
于 2013-10-29T09:37:53.867 に答える