Tag: 变量

Ruby:变量是ruby中的对象吗?

我听说ruby中的所有东西都是对象。 我在接受采访时回答说变量是一个对象,面试官说不。 有人知道真相吗?

如何使用Chef懒惰地评估任意变量

我正在编写一个Chef配方来安装我们的应用程序代码并执行它。 配方需要特别关注此代码最终的目录(用于运行模板,设置日志转发等)。 因此,目录本身会在不同的食谱中出现在很多地方。 我试图获取/定义一个变量,所以我可以在我的资源块中使用字符串插值重新使用它。 这非常简单: home = node[‘etc’][‘passwd’][node[‘nodejs’][‘user’]][‘dir’] 一个示例用法是运行npm install同时告诉它在主目录中插入repo下载,如下所示: execute “npm install” do command “npm install #{prefix}#{app} –prefix #{home}” end 除了定义home变量的第一个块将在编译时运行。 在新的服务器上,我的nodejs用户帐户可能尚不存在,这是一个问题,给出了一个 NoMethodError undefined method ‘[]’ for nil:NilClass 我有一些解决方法,但我想要一个特定的解决方案,使home变量只在配方执行时获取,而不是编译时。 解决方法1 动态评估ruby块内的home变量,如下所示: ruby_block “fetch home dir” do block do home = node[‘etc’][‘passwd’][node[‘nodejs’][‘user’]][‘dir’] end end 这似乎没有实际效果,当你尝试做类似这样的事情时, 为Chef :: Resource :: Directory提供一个NoMethodError未定义方法的主页 : directory “.npm” do path […]

在Ruby中,存储在堆栈中的是什么?

Ruby是否在堆上分配所有内容,或者是否有任何存储在堆栈中的实例? 我的印象是所有变量基本上都在堆栈上,并且包含对堆上对象的透明引用。 我这个想法是否正确? 这个实现是否具体? 此外,如果是在堆栈上分配变量并且仅包含隐藏指针的情况,那么变量本身(忽略它们指向的对象)消耗了多少字节? 编辑: 之所以问这个问题,是因为我试图弄清楚光纤的4kB堆栈限制是否会成为这个问题的一个问题 。 似乎(使用MRI 1.9.3)每个变量本身消耗一个字节,并且与光纤相关的开销很小,这使得可用的堆栈大小减少了几个字节。 此代码将在第4,045次迭代时失败: count = 0 loop do count += 1 puts count varlist = String.new count.times do |i| varlist += “a#{i} = 1\n” end s = “fiber = Fiber.new do \n #{varlist} \n end \n fiber.resume” eval(s) end

在Ruby中使用变量的值作为另一个变量名

我刚刚开始学习Ruby,我编写了一个生成一些数字并将它们分配给变量@ one,@ two,@ third等的程序。用户可以通过输入它的名称来指定要更改的变量(例如一)。 然后我需要做’@ [valueofinout] = asd’之类的事情。 我怎么会这样做,并且有更好的方式,因为我想的方式似乎被劝阻了? 我发现了 x = “myvar” myvar = “hi” eval(x) -> “hi” 但我不完全理解为什么需要第二行。 在我的情况下,我会使用类似的东西 @one = “21” input = “one” input = “@” + input changeto = “22” eval(input) -> changeto

如何在ruby中使用javascript变量

我是rails的新手,我想用一个javascript变量到ruby嵌入代码中来在数据库中进行查询, 这是我的代码 function modify(){ var select = document.getElementById(“special_id”).value; var select2 = document.getElementById(“target_area_id”); select2.options.length = 1; select) %> select2.options[select2.options.length] = new Option(,”1″); } 我想将我的select获得的值与字段的id进行比较。 你能告诉我怎样才能在Ruby中做到这一点? 谢谢

将变量从Javascript传递到Ruby on Rails

在rails中你可以这样做: var name = ; alert(name); //prints the name of the user 你可以反过来这样做 var name = “John”; = name; 显然这不起作用,但是出于示例的目的 关键是,你能否将javascript变量的值传递给rails中的ruby变量

即使在Ruby中IF条件求值为false时,如何创建局部变量?

在irb中尝试以下内容:(我使用的是Ruby 2.0.0-p247) blah #=> NameError: undefined local variable or method `blah’ for main:Object if false blah = ‘blah’ end #=> nil blah #=> nil 即使if条件评估为false ,我也很惊讶blah被赋值为nil 。 我认为if的代码被跳过,因为条件的计算结果为false 。 有Ruby内部知识的人能否解释一下这是怎么发生的? 谢谢

如何访问IRB中所需的Ruby文件中定义的变量?

welcome.rb文件包含: welcome_message = “hi there” 但是在IRB中,我无法访问刚刚创建的变量: require ‘./welcome.rb’ puts welcome_message # => undefined local variable or method `welcome_message’ for main:Object 当您在IRB会话中require某些内容时,引入预定义变量并完成初始化工作的最佳方法是什么? 全局变量似乎不是正确的路径。

为什么Ruby中的符号不​​被认为是一种变量?

编程和Ruby的新手,我希望这个关于符号的问题符合要求。 我理解Ruby中的符号(例如:book , :price )特别适合作为散列键,并且可以全面地完成字符串可以执行的轻量级特定子集。 但是,我在某方面对符号感到困惑。 具体来说,当它们在attr_accessor类型的方法中使用时,它们看起来更像是一个变量。 例如, attr_reader :book, :price 。 如果它们是该用法中的变量,那么这有点令人费解,因为它们通常不在变量类型中列出(如$ global,@ instance,local,@@ class,有时候,CONSTANT,变量类型)被描述。 如果符号是以这种方式使用的变量,那么应该对它们有什么范围? 或者它们在这种情况下仍然是某种轻量级的字符串? (或者也许以更广泛的方式,符号,字符串和变量都具有基本的鸭子性质?)提前感谢您的见解和建议。