【问题标题】:Looking for clarification on the end of this Ruby Challenge - Bowling Ascii art寻找有关此 Ruby 挑战结束的说明 - Bowling Ascii 艺术
【发布时间】:2015-01-06 05:28:07
【问题描述】:
y=(1..10).map{|i| i.to_s==$*[0]?($*.shift;?0):?.}
4.times{|i| puts (y.pop(4-i)* ' ').center 8 } 

输出:

. . . .
 . . .
  . .
   .

* ' ' 在括号内做什么

【问题讨论】:

  • 你可以让我在 PPCG 上问! ;)
  • 我正要提到this answer(我想我刚刚提到了)并请@britishtea 提供解释。然而,答案似乎是针对更一般的情况。对于点图,它会简化很多。
  • 似乎没有人提到$* 是一个保存命令行参数的全局变量。
  • 我更新了答案以包含一个可读版本的代码,应该澄清一些事情:)
  • 神秘的格式是怎么回事?

标签: ruby ascii ascii-art


【解决方案1】:

在第一行之后,y 是一个字符串数组,如下所示:

y=(1..10).map{|i| i.to_s==$*[0]?($*.shift;?0):?.}
# => [".", ".", ".", ".", ".", ".", ".", ".", ".", "."]

Array#*str 等价于Array#join(str),它将字符串连接在一起。特别是,* ' ' 用空格连接数组中的字符串:

y.pop(3)
# => [".", ".", "."]
y.pop(3) * ' '
# => ". . ."

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-25
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多