草庐IT

stdin_reader

全部标签

ruby - `STDIN` 和 `$stdin` 之间的区别

我想知道STDIN和$stdin之间是否有任何真正的区别。我在irb:STDIN==$stdin并返回true。它们只是同一事物的两个名称吗?还是有什么不同? 最佳答案 来自Rubyglobals:STDINThestandardinput.Thedefaultvaluefor$stdin.默认情况下它们是同一个对象。[1]pry(main)>$stdin.object_id=>13338048[2]pry(main)>STDIN.object_id=>13338048[3]pry(main)>$stdin.object_id==S

ruby - 在运行时向 Ruby 类添加类实例变量和 attr_reader?

如何在运行时添加类实例变量、它的数据和attr_reader?classModuledefadditional_datamember,dataself.class.send(:define_method,member){p"Addedmethod#{member}to#{name}"}endend例如,给定这个类classTestadditional_data:status,55end这样我就可以调用:pTest.status#=>prints55 最佳答案 这个怎么样?classObjectdefself.additional_d

Ruby attr_reader 和 +=

我最近被下面的代码难住了:classFooattr_accessor:ndefinitialize(i)@n=ienddefvalnenddefbump!n+=1endendf=Foo.new(0)putsf.valf.bump!putsf.val成功并按预期打印出0。f.bump!导致以下NoMethodErrorfoo.rb:13:in`bump!':undefinedmethod`+'fornil:NilClass(NoMethodError)fromfoo.rb:20:in`'知道为什么n在表达式n+=1中是nil吗?使用n=1+n会引发一个TypeError(nil不能被强制

Ruby STDIN.getc 在接收时不读取字符

似乎RubyIO#getc在返回字符之前等待接收到\n。如果您尝试运行此脚本:STDOUT.sync=trueSTDIN.sync=truewhiledata=STDIN.getcSTDOUT.puts"Chararrived"end对于发送到标准输入的每个字符,它将返回一个“Chararrived”,但仅在发送了\n之后。即使我写STDIN.sync=true,似乎所有字符都被缓冲了。有谁知道如何让脚本在一个字符发送到STDIN后立即打印“Chararrived”? 最佳答案 有ananswerfromMatz:)更新此外,您还可

ruby - Ruby 中的别名 attr_reader

是否可以在Ruby中为attr_reader方法起别名?我有一个带有favorites属性的类,我想为美国用户别名为favorites。执行此操作的惯用Ruby方法是什么? 最佳答案 是的,你可以只使用别名方法。一个非常草率的例子:classXattr_accessor:favouritesalias:favorites:favouritesend 关于ruby-Ruby中的别名attr_reader,我们在StackOverflow上找到一个类似的问题: h

ruby - 将 Hex STDIN/ARGV/gets 转换为 ruby​​ 中的 ASCII

我的问题是如何将cmdARGV的STDIN或从十六进制转换为ascii我知道如果我将十六进制字符串分配给变量,它会在我打印后转换前hex_var="\x41\41\x41\41"putshex_var结果会是AAAA但我需要通过(ARGV或gets)从命令行获取值说我有这行s=ARGVputss#anotherideaputss[0].gsub('x','\x')然后我跑了rubygett.rb\x41\x41\x41\x41我得到了\x41\x41\x41\x41有没有办法让它工作? 最佳答案 您在这里要处理几个问题。您已经尝试解

ruby - STDIN 的非阻塞读取线?

当正确设置为非阻塞模式时,我不明白为什么IO方法不能在STDIN上工作:require'fcntl'stdin_flags=STDIN.fcntl(Fcntl::F_GETFL)pstdin_flags#32770pSTDIN.fcntl(Fcntl::F_SETFL,stdin_flags|Fcntl::O_NONBLOCK)#0pSTDIN.fcntl(Fcntl::F_GETFL)#34818#at_exit{STDIN.fcntl(Fcntl::F_SETFL,stdin_flags&~Fcntl::O_NONBLOCK)}STDIN.readline#thiscallbloc

ruby - 冰糕要求 `sig` `attr_reader`

Sorbet显示attr_reader错误,但如果我错了请纠正我,当函数被声明而不是被调用时需要sigs,对吧?我已经尝试过阅读文档,但我得到的只是这个注释注意:许多看起来像局部变量的Ruby构造实际上是没有括号的方法调用!具体来说,注意attr_reader和零参数方法定义。app/util/hodor.rb:125:Thisfunctiondoesnothavea`sig`https://sorbet.org/docs/error-reference#7017125|attr_reader(:collection_name)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

python - Python 中的 attr_reader

attr_reader在python中是否有一个“同义词”,就像不需要让我输入的东西一样?:classFoo():def__init__(self,foo,bar,spam,spammity,spam,spam,quux,foobar,barfoo):self.foo=fooself.bar=barself.spam=spam#Andsoon...只需一行代码就可以生成self.foo=foo,etc.,有点像ruby​​的attr_reader会生成@foo=foo 最佳答案 要设置所有内容,请尝试:classFoo():def_

ruby - `attr_accessor`/`attr_reader` 创建实例变量是什么意思?

attr_accessor的文档明确地说它创建了一个实例变量:[...]creatinganinstancevariable(@name)andacorrespondingaccessmethod[...]attr_reader的文档也是如此:Createsinstancevariablesandcorrespondingmethods[...]我理解第二部分,即attr_accessor和attr_reader创建方法,但我不明白第一部分。他们“创建实例变量”是什么意思? 最佳答案 这是文档中的错误/误导性措辞。attr_read