【问题标题】:How to assign console output as value to some variable in Ruby?如何将控制台输出作为值分配给Ruby中的某个变量?
【发布时间】:2012-04-03 09:09:50
【问题描述】:

我想将控制台上打印的内容分配为代码下一行的变量中的值。 这可以通过 $stdout 实现吗?

例如,我在控制台上打印一个未打包的数组值。 现在我想使用这个打印的值作为我代码下一行的变量值。 例如 puts "\nPageSize:\n#{c1}\n" 打印 7117 这是一个单元素数组。现在我想将此打印值作为整数分配给此 puts "\nPageSize:\n#{c1}\n" 下一行代码中的某个变量 x。

【问题讨论】:

  • 你真的应该开始阅读 Ruby 的基本介绍。

标签: ruby arrays stdout


【解决方案1】:

在 IRB 中,您可以使用特殊的下划线变量来获取最后一个表达式的结果:

> 2 + 2
> x = _
> 4

但是由于 'puts' 返回 nil,所以它不起作用。如果你避免放置,那么它会起作用。

【讨论】:

    【解决方案2】:

    您通常无法回读您写入标准输出的内容。您可以猴子补丁 putsIO 来实现 - 但我想这不是你想要做的。

    如果你可以打印值,你也可以将它赋值给一个变量(实际上它已经存储在c1[0]中):

    puts "\nPageSize:\n#{c1}\n"
    x = c1[0] # or c1.first
    

    或更好

    x = c1[0] # or c1.first
    puts "\nPageSize:\n#{x}\n"
    

    内插字符串中的#{c1} 部分的作用是调用c1to_s 将其转换为String 并插入String。所以它将[7117] 转换为"7117"

    【讨论】:

      【解决方案3】:

      你可以这样分配............

      首先初始化整数类型的变量

         x = 0
      

      然后赋值为

         x = c1
      
         or
      
         x = arr[0]
      

      或者如你所愿............

      但是 puts 什么也不返回,所以你不能将打印值分配给某个变量。而不是你

      使用某个变量并将其值分配给另一个变量。

      【讨论】:

        猜你喜欢
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 1970-01-01
        相关资源
        最近更新 更多