打印Ruby数组的内容

用户名

我想知道为什么数组即使不告诉也会打印内容。这是一个示例,因为我不善于解释。

    def connect(host)
    begin
        sock = Socket.new(:INET, :STREAM)
        sockaddr = Socket.sockaddr_in(23, host)

        puts "Telnet available on #{host}\n" if sock.connect(sockaddr)

    rescue Errno::ECONNREFUSED
        puts "Telnet unavailable on #{host}"
    end
end


def scan
    @host = str_r(@host) # Formats IP

        (1..255).each do |oct|
            begin
                nhost = @host+oct.to_s
                @array << connect(nhost)

            rescue Errno::EHOSTUNREACH
                #puts "Host #{nhost} unreachable!"
            end
        end
    #puts @array
end

方法循环在哪里做类似尝试连接到主机的事情。即使我没有告诉它“放入”任何东西,它也可以。它将方法(p)的结果一一列出。我希望将所有结果保存到一个数组中,然后在尝试连接到所有主机后将它们全部打印在最后。'<<'运算符不是简单地将任何内容添加到数组中吗?

保罗·里希特

基于此更新,存在两个问题:

  1. 您确实putsconnect方法中确实有一些语句,给定方法的流程,无论如何,它们始终将输出某些内容。

  2. 在ruby中,方法中的最后一条语句是该方法返回的值。puts方法不返回任何内容,并且puts是方法的最后一行(即使它落入了救援块)。您可以尝试重写该方法,使所需的值是上次(可能是混乱的),也可以return [something]在末尾简单添加,以确保返回了所需的值(要返回[something]的变量在哪里)。

另外,只是为了解决您在评论中的发言:即使我只是将所有内容都推送到了array中,我真的不明白为什么要打印出来

要记住的关键是这是两个单独的操作:首先,该方法被称为...当返回值被推入数组时。该方法不知道其返回值将到达何处,因此这些puts语句无论如何都将执行,除非您在该方法中放入了一些内容以对其进行过滤(例如一条if语句,您已经至少有一次,看起来像)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP打印数组内容

来自分类Dev

单行打印数组内容

来自分类Dev

php打印数组内容

来自分类Dev

打印二维数组的内容

来自分类Dev

用Java打印数组内容

来自分类Dev

使用* only *指针打印数组的内容

来自分类Dev

C#数组不打印出内容

来自分类Dev

使用递归反转并打印出数组的内容

来自分类Dev

尝试打印数组不会打印任何内容

来自分类Dev

Ruby中带乘法的打印数组

来自分类Dev

在Ruby中将数组打印为表格

来自分类Dev

Ruby数组的打印内存地址

来自分类Dev

打印零格式的 ruby 数组

来自分类Dev

在Ruby中使用行计数器打印哈希内容

来自分类Dev

在Ruby中使用行计数器打印哈希内容

来自分类Dev

根据数组内容 Ruby 在特定位置插入数组

来自分类Dev

打印数组内容时如何在数组中打印位置?

来自分类Dev

如何在Tcl中打印数组的内容

来自分类Dev

使用gdb将数组内容打印到文件中

来自分类Dev

如何在C#中将数组的内容打印到标签

来自分类Dev

生成一个因子数组并打印其内容

来自分类Dev

Java数组堆栈,从上至下打印堆栈的内容

来自分类Dev

尝试返回字符串数组并打印内容,但收到错误

来自分类Dev

如何在结构中打印无符号字符数组的内容?

来自分类Dev

C不打印2D动态数组内容

来自分类Dev

循环打印内容ArrayList的数组索引超出范围

来自分类Dev

从文件获取行,放入结构数组,打印内容(作业)

来自分类Dev

C语言中的3D数组及其打印内容

来自分类Dev

如何在C#中将数组的内容打印到标签