Ruby 语法错误,意外的“=”

Ruby 语法错误,意外的“=”,ruby,Ruby,我将以下内容作为课程的一部分 def to_s i = 0 first_line? = true output = '' @selections.each do | selection | i += 1 if first_line? output << selection.to_s(first_line?) first_line? = false else output

我将以下内容作为课程的一部分

def to_s
   i = 0
   first_line? = true
   output = ''
   @selections.each do | selection |
      i += 1
      if first_line?
         output << selection.to_s(first_line?)
         first_line? = false
      else
         output << selection.to_s
      end
      if i >= 5
         output << "\r"
         i = 0
      else (output << " $ ")
      end
   end
   return output
end 

给予的东西,也要提前感谢,这让我发疯。

我想,你不能在结尾用“?”来命名变量。

我想,你不能在结尾用“?”来命名变量。

我相信这是一种更简洁的方法来完成上述未经测试的工作:

def to_s 
  output = ""
  @selections.each_with_index do | selection,line |  
    output << line==0 ? selection.to_s(true) and next : selection.to_s
    output << line % 5 ? " $ " : "\r"
  end 
  return output 
end
如果你不喜欢三元运算符x?y:z然后你可以做它们,如果:

def to_s 
  output = ""
  @selections.each_with_index do | selection,line |  
    if line==0
      output << selection.to_s(true)
    else
      output << selection.to_s
      if line % 5
        output << " $ "
      else
        output << "\r"
      end
    end
  end
  return output 
end  

我相信这是一种更简洁的方法,可以完成上述未经测试的任务:

def to_s 
  output = ""
  @selections.each_with_index do | selection,line |  
    output << line==0 ? selection.to_s(true) and next : selection.to_s
    output << line % 5 ? " $ " : "\r"
  end 
  return output 
end
如果你不喜欢三元运算符x?y:z然后你可以做它们,如果:

def to_s 
  output = ""
  @selections.each_with_index do | selection,line |  
    if line==0
      output << selection.to_s(true)
    else
      output << selection.to_s
      if line % 5
        output << " $ "
      else
        output << "\r"
      end
    end
  end
  return output 
end  

除了下面提到的一些例外情况,变量名只能包含字母、数字和下划线。此外,它们必须以字母或下划线开头;它们不能以数字开头。你不能用?或在变量名中

除此之外,Ruby中还有一个很强的约定,即在某个对象的末尾加一个问号表示返回布尔值的方法:

4.nil? # => returns false....
所以,即使你可以使用它,像first_line这样的变量?会让红宝石爱好者感到困惑和恼火。他们希望这是一种测试某事物是否是某事物的第一行的方法,不管它在上下文中到底意味着什么

变量名的例外情况:

全局变量以$-开头,例如,$stdin表示标准输入。 实例变量以@开头,例如对象的@名称 类变量以@@-开头,例如,类的@总计
除了下面提到的一些例外情况,变量名只能包含字母、数字和下划线。此外,它们必须以字母或下划线开头;它们不能以数字开头。你不能用?或在变量名中

除此之外,Ruby中还有一个很强的约定,即在某个对象的末尾加一个问号表示返回布尔值的方法:

4.nil? # => returns false....
所以,即使你可以使用它,像first_line这样的变量?会让红宝石爱好者感到困惑和恼火。他们希望这是一种测试某事物是否是某事物的第一行的方法,不管它在上下文中到底意味着什么

变量名的例外情况:

全局变量以$-开头,例如,$stdin表示标准输入。 实例变量以@开头,例如对象的@名称 类变量以@@-开头,例如,类的@总计

变量名允许非ASCII字母,并且有一个问号,因此您可以将问号和某些形式的空格字符放入变量名。

变量名允许非ASCII字母,并且有一个问号,所以你可以在变量名中添加问号和一些形式的空格字符。

变量名包含?,不应该。变量名包含?,不应该。有没有一种标准的语法方法来定义voolean变量?对于非ASCII字母,你可以在变量名中添加各种奇怪的东西。让我问另一种方法,鲁比主义者是否更喜欢用一种特定的方式来定义布尔变量,这样读者就知道它们是布尔变量。例如,在Objective-C中,你可以在很多地方看到isFoo。@安德鲁,我没有意识到这一点。这听起来不是个好主意,但谢谢你的澄清。@Ben我不知道Ruby中存储布尔值的变量有什么约定。可能有一个,但我想不起来。有没有一种标准的语法方法来定义voolean变量?使用非ASCII字母,你可以将各种奇怪的东西放入变量名中。让我用另一种方法问一下,鲁比主义者是否更喜欢用一种特定的方式来定义布尔变量,这样读者就知道它们是布尔变量。例如,在Objective-C中,你可以在很多地方看到isFoo。@安德鲁,我没有意识到这一点。这听起来不是个好主意,但谢谢你的澄清。@Ben我不知道Ruby中存储布尔值的变量有什么约定。可能有一个,但我想不起来。再一次,澄清是有帮助的,但我认为在这种情况下,你能做什么和你应该做什么之间存在巨大的差异。再一次,澄清是有帮助的,但我认为在这种情况下,你能做什么和你应该做什么之间存在巨大的差异。我喜欢这个,但是需要添加括号,即index==0?selection.to\u strue:selection.to\s和索引%5?$:\我喜欢这样,但需要添加括号,即index==0?selection.to\u strue:selection.to\s和索引%5?$:\R