在Ruby中使用以下代码:
if (tickFormat.length > 12 && tickFormat.length < 24)
i = 1
while(i < tickFormat.length) do
if (i%2 != 0)
tickFormat.at(i)[1] = ''
end
i++
end
end
我得到第二个“结束”语句的“意外的keyword_end”。如果我删除while循环代码运行没有错误。有什么想法吗?
答案 0 :(得分:3)
试试这个:
if (tickFormat.length > 12 && tickFormat.length < 24)
i = 1
while(i < tickFormat.length) do
if (i%2 != 0)
tickFormat.at(i)[1] = ''
end
i += 1
end
end
i++
语法在Ruby
答案 1 :(得分:3)
你显然是来自C角,所以我身边有一些额外的信息:
首先我想引用Alexey Anufriyev
我认为您应该使用您的平台采用的命名约定。在C#代码中,underscore_case看起来很奇怪,因为Ruby中的camelCase =)
所以你应该考虑使用下划线表示法。
你的代码也很漂亮。这有点像红宝石(尽管你是否在同一行写下简短的陈述是一种品味问题):
if tick_format.length === (13..23)
tick_format.each_with_index do |tf, i|
tf[1] = '' if i.odd?
end
end
# if you use active support's core extensions (which is recommended imho)
# you can rewrite line 1 as:
if tick_format.length.in? 13..23
答案 2 :(得分:1)
Ruby有太多的糖来编码C风格:)
尝试类似
的内容if tickFormat.length.between?(13,23)
(1..tickFormat.length).step(2) do |i|
tickFormat.at(i)[1] = ''
end
end
答案 3 :(得分:0)
您想使用i + = 1来递增。
if tickFormat.length > 12 && tickFormat.length < 24
i = 1
while i < tickFormat.length do
if (i%2 != 0)
tickFormat.at(i)[1] = ''
end
i+=1
end
end
答案 4 :(得分:0)
唯一不对的是i++
。我可能会建议将样式从C-like迁移到canonical-Ruby,但这只是个人选择......
if (13..23) === tickFormat.length
i = 1
while i < tickFormat.length
if i % 2 != 0
tickFormat.at(i)[1] = ''
end
i += 1
end
end