所以,我遇到了这个问题,我希望在例程继续之前检查三个条件,但它不断抛出语法错误,说它不期望多个条件.现在,我知道我见过其他人使用如下行:
if x > 100 && x % 2 == 1 #Do something end
但是,无论出于何种原因,这条线:
if (letters.eql? letters.upcase && dash.eql? '-' && numbers.to_i.to_s.eql? numbers)
惹错了很多错误.这与".eql"有关吗?还是我还没有遇到过与Ruby无关的东西?
以下是其余代码供参考:
print "Enter license plate: "; input = gets.strip; if input.length == 8 letters = input[0,2]; dash = input[3]; numbers = input[4,7]; if (letters.eql? letters.upcase && dash.eql? '-' && numbers.to_i.to_s.eql? numbers) puts "#{input} is a valid license plate." else print "All valid license plates are three (3) uppercase letters, followed by a dash (-), followed by four (4) digits"; end else print "All valid license plates are 8 characters long."; end
另外,这些是错误:
LicensePlate.rb:7: syntax error, unexpected tSTRING_BEG, expecting ')' ...? letters.upcase && dash.eql? '-' && numbers.to_i.to_s.eql? ... ... ^ LicensePlate.rb:7: syntax error, unexpected tIDENTIFIER, expecting ')' ... numbers.to_i.to_s.eql? numbers) ...
Rob Mulholan.. 5
认为你只是错过了一些parens - 试试这个:
if (letters.eql?(letters.upcase) && dash.eql?('-') && numbers.to_i.to_s.eql?(numbers))
认为你只是错过了一些parens - 试试这个:
if (letters.eql?(letters.upcase) && dash.eql?('-') && numbers.to_i.to_s.eql?(numbers))
应该这样做:
if letters.eql?(letters.upcase) && dash.eql?('-') && numbers.to_i.to_s.eql?(numbers)
如果愿意,您仍然可以将整个条件包装在括号中,但是使用Ruby(与JavaScript不同),则不需要。