Lua三元运营(代码高尔夫)

时间:2018-02-05 02:39:26

标签: lua

我正在做一些打高尔夫球的代码,我已经接受了这个:

for i=1,100 do for j=1,i do if i%j<1 then io.write(j.." ") end end print() end

有没有办法让if语句成为内联?所以它被包装到io.write()

1 个答案:

答案 0 :(得分:1)

可以使用and..or运算符模仿lua中的三元运算:

a and b or c

类似于

a ? b : c

在真实的价值观下。对于你的情况:

for i=1,100 do
  for j=1,i do
    io.write( ((i % j) < 1 and j.." " or '')
    -- (i % j) < 1 and io.write(.." ")
  end
  print() -- why print here?
end
高尔夫球,它是

io.write(i%j<1 and j.." "or'')

可以节省4个字符