首页 > 编程语言 >Ruby web开发实战(8)-Ruby疑难点(4)

Ruby web开发实战(8)-Ruby疑难点(4)

时间:2023-07-01 13:00:36浏览次数:34  
标签:bin web end do 疑难 result 11 Ruby numSum

目录

Proc 与lambda

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = Proc.new  do
    |x| 
    result=0
    x.each do |n| 
        result+=n 
    end
    result
end

puts numSum.call([11,22,33])

66


------------------
(program exited with code: 0)
[maisipu@fedora learn]$ 

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = lambda  do
    |x| 
    result=0
    x.each do |n| 
        result+=n 
    end
    result
end

puts numSum.call([11,22,33])
#!/usr/bin/ruby 
#encoding:UTF-8


numSum = lambda  do
    |x , y| 
    result=0
    x.each do |n| 
        result+=n*y 
    end
    result
end

puts numSum.call([11,22,33],3)
#!/usr/bin/ruby 
#encoding:UTF-8


numSum = Proc.new  do
    |x , y| 
    result=0
    x.each do |n| 
        result+=n*y 
    end
    result
end

puts numSum.call([11,22,33],3)
#!/usr/bin/ruby 
#encoding:UTF-8


numSum = lambda  do
    |x,y| 
    result=0
    x.each do |n| 
        result+=n*y
    end
    result
end

puts numSum.call([11,22,33],3)





lambda传参数时注意不能少参数

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = lambda  do
    |x,y| 
    result=0
    x.each do |n| 
        result+=n*y
    end
    result
end

puts numSum.call([11,22,33])
[maisipu@fedora learn]$ /bin/sh /tmp/geany_run_script_PABB71.sh
learn4.rb:5:in `block in <main>': wrong number of arguments (given 1, expected 2) (ArgumentError)
	from learn4.rb:14:in `<main>'

Proc在有些情况可以少参数

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = Proc.new  do
    |x,y| 
    if y==nil
        y=0
    end
    x+y
end

puts numSum.call(11)

[maisipu@fedora learn]$ /bin/sh /tmp/geany_run_script_Y2K861.sh
11

另外,下面中代码没问题

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = lambda  do
    |x,y| 
    if y==nil
        y=0
    end
    return x+y
end

puts numSum.call(11,22)

但换成Proc块就不行

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = Proc.new  do
    |x,y| 
    if y==nil
        y=0
    end
    return x+y
end

puts numSum.call(11,22)

因为Proc块的return 会直接退出运行块的程序,而lambda只是返回运行它的程序,继续。

传引用

不能通过普通方式实现传引用,不一定是想的那样。

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = lambda  do
    |x,y,result| 
    result=x+y
end

result=0
numSum.call(11,22,result)
puts result
#!/usr/bin/ruby 
#encoding:UTF-8


numSum = Proc.new  do
    |x,y,result| 
    result=x+y
end

result=0
numSum.call(11,22,result)
puts result

[maisipu@fedora learn]$ 
[maisipu@fedora learn]$ /bin/sh /tmp/geany_run_script_H3P861.sh
0


只能通过数组或HASH传引用

#!/usr/bin/ruby 
#encoding:UTF-8


numSum = Proc.new  do
    |x,y,result| 
    result[0]=x+y
end

result=[0]
numSum.call(11,22,result)
puts result

标签:bin,web,end,do,疑难,result,11,Ruby,numSum
From: https://www.cnblogs.com/waterruby/p/17515377.html

相关文章

  • Unity 打包发布到 Web 相关配置
    IIS发布时,web.config配置文件如下所示:<?xmlversion="1.0"encoding="UTF-8"?><configuration><system.webServer><staticContent><mimeMapfileExtension=".data"mimeType="multipar......
  • GLM 大加强,清华团队推出 GLM 联网加强版 WebGLM!
    夕小瑶科技说原创作者|小戏、ZenMoore大模型生成答案不可靠?一种很直接的思路就是结合传统的搜索引擎的“知识”来对大模型进行一次检索增强。其实早在InstructGPT面世以前,OpenAI就发布了可以用作搜索结果聚合的模型WebGPT,WebGPT基于GPT-3试图模仿人类的“搜索行为”......
  • 推荐一个php环境,UltraWebServer
    下载地址:https://www.pilotlogic.com/sitejoom/index.php/downloads.html整体使用过于傻瓜化就不描述使用说明了需要注意的是由于使用默认的php设置所以php的性能不佳需要设置如下两个系统环境变量(推荐使用RapidEnvironmentEditor)PHP_FCGI_MAX_REQUESTSPHP_FCGI_CHILDRE......
  • APP中Web容器的核心实现
     现在的业务型APP中,采用纯原生开发策略的已经很少了,大部分都使用的混合开发。如原生,H5,ReactNative,Flutter,Weex它们之间任意的组合就构成了混合开发。其中原生+H5是出现最早的,老牌混合方案,即使过来多年,在现在的混合开发方案中H5也是使用率非常高的。在APP中嵌入Web容器,将更新......
  • webservice 入门介绍
    WebService是帮助多个应用程序与平台和编程语言之间以独立的方式互相通信的标准化技术。它是利用标准XMLmessaging(主要SOAP)技术,可以访问网络上的其他计算机的记述多种操作的软件接口。此接口主要由WSDL(WebServiceDescriptionLanguage)记述,可以处理多种多样的系统运作。......
  • 无意间做了个 web 版的 JVM 监控端前后端分离 React+Spring Boot
    本来就是为了更多的了解JMX,第一步就想把所有的MBean和属性都展示出来,开始在控制台输出,但是效果不好,内容太多太长,不够直观,然后就加了个web端的树形结构。然后做着做着突然发现,再稍微改改就能当个web版的简易监控端用了。此工具只在hotspotJVM8环境下测试过。可支持查看......
  • IBM WebSphere MQ8.0 安装与队列创建
    最近接触的项目中使用了IBMWebsphereMQ8.x,由于要为其编写监控插件,所以在网上找了很久的资料,发现8.x实在是太老了,很多资源和教程都没有,遂决定在此统一整理和记录一下.安装下载安装包IBM官方已不再提供下载,这里贴一下网盘的链接链接:https://pan.baidu.com/s/1f2U0XqEe0hi......
  • web自动化测试入门篇05——元素定位的配置管理
      ......
  • JS逆向实战19——通杀webpack逆向
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!网站aHR0cHM6Ly9mb2dhbmctbS5pdG91Y2h0di5jbi9tZWRpYURldGFpbC8zODc1Nw==aHR0cHM6Ly93d3cuZ205OS5jb20......
  • node使用jsonwebtoken生成token与验证是否过期
    场景我们可以使用cookie,session,token来做鉴权。下面我们来看一下,如何使用token来做鉴权jwt.sign的简单介绍npminstalljsonwebtoken下载使用jsonwebtoken生成token的基本语法。jwt.sign(payload,secretOrPrivateKey,[options,callback])第1个参数payload:可以......