`
liss
  • 浏览: 826345 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ruby学习笔记(7)-方法

    博客分类:
  • Ruby
阅读更多

#定义方法
def method
  puts 'method'
end
#调用时可以带或不带()均可
method #method
method() #method
#使用参数
def methodUseArgs(arg1,arg2)
  print arg1,arg2
end
#调用时可以带或不带()均可
methodUseArgs('hello',"World\n")#helloWorld
methodUseArgs 'hello',"World\n" #helloWorld
#使用默认参数
def methodUseDefaultArgs(arg1,arg2="World\n")
 print arg1,arg2
end
methodUseDefaultArgs("Hello")#HelloWorld
#使用可变长度的参数
def methodUseVariableLenthArgs(*args)
  puts "#{args.join(' ')}"
end
methodUseVariableLenthArgs('hello','world ')#hello world
#使用块block
def methodUseBlock(arg)
  if block_given?
    yield arg
  else
    arg
  end
end
puts methodUseBlock("no block")#no block
puts methodUseBlock("no block"){|arg| arg.sub('no','')}# block
#使用&将块转为proc对象
class SampClass
 def SampClass.methodConvertBlock2Proc(&proc)
   @@proc=proc
 end
 def SampClass.executeProc(amount)
   puts "pi*#{amount}->#{@@proc.call(amount)}"
 end
end
SampClass.methodConvertBlock2Proc{|amount| result=amount*Math::PI}
SampClass.executeProc(5)  #pi*5->15.707963267949
SampClass.executeProc(20) #pi*20->62.8318530717959
#ruby中的方法有个有趣的地方是可以返回多个值
def methodReturn2Variable
  return '3Q','ruby'
end
result1,result2=methodReturn2Variable
puts result1,result2 #3Q ruby
#调用时护展数组
def method3args(arg1,arg2,arg3)
  print arg1,arg2,arg3,"\n"
end
method3args(1,2,3) #123
method3args(*[1,2,3]) #123
method3args 1,*[2,3] #123
method3args *(1..3).to_a #123
#更一般更灵活的是使用lambda将一个块转换为一个proc对象
proc1=lambda{|n| n*=2}
puts proc1.class #proc
#下面的两种写法是等价的
puts (1..10).collect{|n| n*=2}.join(' ')#2 4 6 8 10 12 14 16 18 20
puts  (1..10).collect(&proc1).join(' ')#2 4 6 8 10 12 14 16 18 20
#使用哈希表
def methosUseHash(hashtable)
   hashtable.collect{|de| print "key:#{de[0]} value:#{de[1]}\n"}
end
methosUseHash({"key"=>"k","value"=>"v"})#key:value value:v key:key value:k
#可以省略{}
methosUseHash("key"=>"k","value"=>"v") #同上
#更进一步可以省略""号
methosUseHash(:key=>:k,:value=>:v) #同上


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blackant2/archive/2006/12/03/1427582.aspx

分享到:
评论

相关推荐

    Ruby学习笔记

    这个暑假回家没事干闲...恩,废话就少提,下面我学习Ruby的各个部分。其中Ruby风格这一部分是开放的,因为我暂时还没有形成自己的风格。我用xmind来记笔记,因此我只是把笔记搬到博客上,看看下面的图。好有爱啊!!!

    学习Ruby的笔记以及Demo源码.zip

    学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及...

    rubyinstaller-devkit-3.0.2-1-x64 and Ruby 学习笔记.7z

    rubyinstaller-devkit-3.0.2-1-x64 and Ruby 学习笔记.7z 由于国内访问github服务器不稳定,所以上传到CSDN给大家方便下载

    Ruby学习笔记(学习心得)

    Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理

    ruby学习笔记

    ruby基础笔记,自学笔记,ruby基础语法非常全面ruby基础笔记,自学笔记,ruby基础语法非常全面

    个人ruby学习笔记

    ruby学习笔记....................

    精华ruby学习笔记和代码

    这个笔记里包含了ruby的整型,字符串,浮点数,布尔等基础数据类型,还有数组,哈希hash的用法, 类的定义,函数方法,以及对象定义,其他高级用法解释,除了笔记记录的语法糖之外,还包含了一些解释性的代码,帮助...

    积分管理系统java源码-ruby-tutorial-cn:ruby-tutorial-cn

    学习笔记 ruby --version > ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32] 在入门学习 Ruby 的过程中,看了不少网上的教程,经常遇到的是明明代码和教程上完全一模一样,但是运行后各种报错。 本文主要...

    ruby编程学习笔记及demo

    Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。 您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro ...

    学习 Ruby 的笔记以及 Demo.zip

    学习 Ruby 的笔记以及 Demo.zip

    Ruby自学笔记

    Ruby自学笔记,这是我在学习Ruby时的小结笔记,若对你有所帮助请给满星,谢谢!!!

    Redis全套学习笔记 (带章节目录) 完整版pdf

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    learning-ruby-the-hard-way:通过http归档的关于Ruby学习的笔记

    通过关于Ruby学习的笔记。 进度表! 锻炼 话题 已开始 完全的 黑夜时间 演习 笔记 前言 设置 2015年8月16日 2015年8月16日 0.25 -- 介绍 设置 2015年8月16日 2015年8月16日 0.75 -- 设置 设置 2015年8月19日 ...

    Ruby学习笔记一

    Ruby会默认返回方法中的最后一个值。 如果需要返回多个值,可以用数组来实现。 可以通过强制声明return来返回值。 基础的输出方法是用puts(输出一行),print(直接打印)。 基础的输入方法是gets(读入一行,包含行尾的...

    《Java JDK6学习笔记》

    Java、JDK6、良葛、林信良、Java学习笔记 我没看到实体书,不知是否相同, 近些日学习一下ruby方面的,顺便看看java方面的, 这个是Java JDK6的学习笔记电子版, 压缩包里包含两个文件, 一个是chm格式(这个还行吧)...

    谷歌师兄的leetcode刷题笔记-THPj5-chauffe_ruby:THPj5-heater_ruby

    谷歌师兄的leetcode刷题笔记THPj5-Ruby加热器 3 和 5 的倍数 OK ======================== Cédric Villani 需要帮助才能获得下一个诺贝尔数学奖。 他需要解决以下问题:如果我们列出所有 10 以下的自然数是 3 或 5 ...

    ruby 学习笔记(2) 类的基本使用

    ruby语言跟c#的一些重要差别在于: 1.ruby是动态语言,c#是静态语言–即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此) 2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/...

Global site tag (gtag.js) - Google Analytics