我正在尝试用input(n,m)
打印国际象棋棋盘。 n
代表列,m
代表行。例如,"4,3"
应输出:
0101
1010
0101
我的代码提供了“意外的keyword_end,期待$ end”错误:
def zero_col(n)
n.times{|x| print n%2}
end
def fir_col(n)
n.times{|x| x%2==0 ? print 1 : print 0}
end
def chess(input)
n,m=input[0].to_i, input[2].to_i
m.times{|x| x%2==0 ? zero_col(n) : fir_col(n)}
end
chess("3,2")
它还包含另一个错误:
syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '('
n.times{|x| x%2==0 ? print 1 : print 0}
^
我使用?:
错了吗?
答案 0 :(得分:1)
在Ruby中,方法使用def
关键字声明,因此从functions
更改为def
。
答案 1 :(得分:0)
更改
n.times { |x| x%2==0 ? print 1 : print 0 }
# actually parsed as
# n.times { |x| x%2==0 ? print(1 : print 0}), which is invalid syntactically.
到
n.times { |x| x%2==0 ? print(1) : print(0) }
答案 2 :(得分:0)
不要使用三元(?:
)进行流量控制。
一般情况下,它在Ruby中被避免,当它被使用时,使用它来进行简单的测试,返回不同的结果,类似于单行if
/ else
4.times{ |x|
print x%2==0 ? 1 : 0
}
另外,请大量使用空格,因为它有助于提高可读性。例如,"是可读的","或者是这个"?
并且,使用括号来帮助从三元组中的结果中定义逻辑。它在语法上并不是绝对必要的,但它有助于提高可读性。
4.times{ |x|
print (x % 2 == 0) ? 1 : 0
}