编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   

 Wiki.Wiki.   博客博客   搜索搜索   图灵图灵   聊天室  成员成员 
 乐于屈服
指数 -> 编程,Ruby. -> 红宝石教程
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息 刷新页面 查看下一个主题
作者 信息
哈斯克尔




邮政发布: 2006年12月27日星期三晚10:39  帖子主题:乐趣率

产量可能是Ruby最强大的功能之一。它基本上允许您将代码块放入函数中。

这可能是一个值,字符串,正则表达式,函数调用等...

Consider:

红宝石:
def动态_square.
  返回 屈服 * 屈服
结尾


红宝石:
put动态_square. { 6 }


Which results in 36.

Or:

红宝石:
defvowel_replace..
  line = 屈服
 
  如果线=~ /a|e|i|o|u/
    line = line.GSUB.(/ a | e | i | o | U /, '是')
  结尾

  result = line
结尾


红宝石:
putvowel_replace.. {“快速的棕色狐狸跳过懒狗”}


这导致“Thy Qyyck Brywn Fyx Jympyd Yvyr Thy Lyzy Dyg”。

红宝石:
def lambda.
  返回 屈服
结尾


红宝石:
lambda.
  put “OMG!偷了Lisp !!”                     
结尾


红宝石:
lambda.
  put “Lisp再次抢夺\ n" * 10
结尾


琐碎的例子。但他们表现出潜力(特别是在AI中)。

所以去实验!
赞助
赞助
赞助
赞助
rdrake.




邮政发布: 2006年12月27日星期三11:53下午  帖子主题:Re:乐趣

Haskell写道:
考虑:

红宝石:
def动态_square.
  返回 屈服 * 屈服
结尾


红宝石:
put动态_square. { 6 }


Which results in 36.
记得在Ruby中,评估的最后一个值也将是默认情况下返回的结果。

考虑:

红宝石:
def动态_square.
  屈服 * 屈服
结尾


红宝石:
> dynamic_square { 6 }
=> 36
眨眼
WTD.




邮政发布: 2006年12月28日星期四12:53  帖子主题:(没有主题)

代码:
def vowel_replace.
  line = yield
 
 如果线路=〜/ a | e | i | o | U /
    line = line.gsub(/a|e|i|o|u/, 'Y')
  end

  result = line
结尾


怎么样...

代码:
def vowel_replace.
  yield.gsub(/a|e|i|o|u/, 'Y')
结尾


微笑
rdrake.




邮政发布: 2006年12月28日星期四12:57  帖子主题:(没有主题)

WTD写道:
怎么样...

代码:
def vowel_replace.
  yield.gsub(/a|e|i|o|u/, 'Y')
结尾


微笑
或者...
代码:
IRB.(main):003:0> def vowel_replace (letter)
IRB.(main):004:1>   yield.gsub(/a|e|i|o|u/, letter)
IRB.(main):005:1> end
=> nil
IRB.(main):007:0> vowel_replace('y'){"hello"}
=> "hylly"
哈斯克尔




邮政发布: 2006年12月28日1:05 PM  帖子主题:收益率更有趣

通过价值来阻止使用产量

红宝石:
def pass_name
  put "你叫什么名字?\ n"
  n = 得到
  屈服(n)
结尾


红宝石:
pass_name.   |name|             
              put(“你好, \ n " + name)
          结尾


这也可以是圆顶:

红宝石:
pass_name.   |name|             
              put “你好, \ n #{name}"
          结尾


正如您所看到的,变量 n pass_name方法传递给块(do..end),然后使用(在新名称下, 名称,由|表示和|成为块的变量)。

该块也可以用括号({和})而不是do .end,但它是多衬里的,所以do..end是“标准”。

玩得开心,和实验 微笑.
WTD.




邮政发布: 2006年12月28日1:11下午1:11  帖子主题:RE:屈服的更多乐趣

Haskell写道:
通过价值来阻止使用产量

红宝石:
def pass_name
  put "你叫什么名字?\ n"
  n = 得到
  屈服(n)
结尾


要不就:

代码:
def pass_name.
   puts "What is your name?"
   yield gets
结尾


我也发现它很奇怪,你不知道“Puts”会根据需要自动添加换行符。在您的代码中,您使用的换行符是无关紧要的。
哈斯克尔




邮政发布: 2006年12月28日1:47下午1:47  帖子主题:(没有主题)

我知道。我愿意与我的意图明确。它不会在输出中产生任何差异,但我确切地知道它会在没有考虑函数调用(旧习惯死亡)的情况下。

我还在示例中使用额外的vars来展示如何使用产量传递VAR。在这个例子中,它不是让那些很重要的传递(谢谢你的额外的例子)。
克莱顿




邮政发布: FRI 12月29日,2006年9:14 AM  帖子主题:(没有主题)

好的,但之后,展示如何通过摆脱未洁净的“东西”来精简。遵循这个简单的例子:

红宝石:

def is_odd?(数字)
    如果数字 % 2 ==. 1 然后
        真的
    别的
        错误的
    结尾
结尾


可以缩短:

红宝石:

def is_odd?(数字)
    number % 2 ==. 1
结尾


现在,从初学者的角度来看,第一个越来越有右转?这很棒,但他们可能知道必须有更好的做事方式,所以你向他们展示了,并解释了为什么它的工作原理。
赞助
赞助
赞助
赞助
从上一个显示帖子:   
   指数 -> 编程,Ruby. -> 红宝石教程
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息 刷新页面 查看下一个主题

11  [ 8 Posts ]
跳到:   


Style:  
搜索: