Ruby 关于数组

匿名 · 2013年04月10日 · 最后由 yeetim 回复于 2013年04月10日 · 3254 次阅读
def get_name(id)
    c=['a','b','c']
    return c[id]
end
def get_str()
    a=['abcd','bcde','cdef']
    a.each do |str|
        puts "#{get_name(id)} to #{str}"
    end
end
get_str()

请问我怎么实现

a to abcd
b to bcde
c to cdef

楼主不是自己写了代码了么 a.each_with_index do |str, index| 即可 或者楼主想说整个代码结构都想找个另外的形式来写?

匿名 #2 2013年04月10日

#1 楼 @zj0713001 不是,刚学!有些结构用法还不是很明白!非常感谢~

['a','b','c'].zip(['abcd','bcde','cdef']) .each do |x,y| "#{x} to #{y} " end

匿名 #4 2013年04月10日

#3 楼 @windwiny 谢谢,不过我不能用这种方法~

#2 楼 @yeetim 整段的话 如果不改变你的函数结构 还能写的更好看

def get_name(id)
    %w(a b c)[id]
end
def get_str()
    %w(abcd bcde cdef).each_with_index do |str, id|
        puts "#{get_name(id)} to #{str}"
    end
end
get_str()
匿名 #6 2013年04月10日

#5 楼 @zj0713001 嗯,但是我的 get_name 是从文本里面读取的数据,其实我想知道怎么得到对应的 id。谢谢~ 学习了~

#6 楼 @yeetim 我一猜就是需求 哈哈 所以我说不改变你的函数结构的情况

def get_str(*args)
  args.each do |arg|
    arg_str = []
    4.times { arg_str << arg; arg = arg.next}
    puts arg_str.first + " to " + arg_str.join
  end
end

get_str('a', 'b', 'c', 'd')

楼主是要这样重写么?XD

匿名 #9 2013年04月10日

#7 楼 @zj0713001

new.each_with_index do |name,index|
        system "mv "+get_old_name(index).to_s+" "+name.to_s
end

可以这样吗?

#9 楼 @yeetim 你的 new 是什么... new 的位置应该是一个数组

匿名 #13 2013年04月10日

#11 楼 @zj0713001 但是输出来的是:

mv name old_name

为什么是这样的格式?

匿名 #14 2013年04月10日

找到原因了,是返回有 puts 导致的~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号