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

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

时间:2023-06-29 13:44:05浏览次数:50  
标签:bin web end ARGV 疑难 num irb main Ruby

目录

运算符方法调用

irb(main):001:0> 10-9*33
=> -287
irb(main):002:0> 
irb(main):003:0> a=11
=> 11
irb(main):004:0> b=12
=> 12
irb(main):005:0> c=3
=> 3
irb(main):006:0> a-b*c
=> -25
irb(main):007:0> 

在Ruby中,许多运算符实际上是方法调用。
编写a-b*c时,实际上是在要求对象b执行方法*,并传递参数c。
然后,要求a执行计算-,并将前一步计算的结果作为参数传递。

ruby所有都是对象,可以重新定义对象方法,下面重新定义操作符

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

class IntNum 
     def initialize(num)
         @num=num
     end
     def num()
         return @num
     end
     def +(other)
          IntNum.new((@num+(other.num)) % 10)
     end
     def to_s()
         @num.to_s()
     end
end
if __FILE__ == $0
	a=IntNum.new(18)
	b=IntNum.new(20)
	c=a+b
	puts c
end
[maisipu@fedora learn]$ /bin/sh /tmp/geany_run_script_HPUZ61.sh
8


------------------

定义一个 to_s自定义类的方法意味着调用 puts该类上的方法将返回由 to_s 指定的输出

正则表达式

  • 匹配

/模式/=~希望进行匹配的字符串

irb(main):001:0> s='asdfa--2314基本上团团圆圆国llllllll'
=> "asdfa--2314基本上团团圆圆国llllllll"
irb(main):002:0> /ll/=~s
=> 19
irb(main):003:0> /sda/=~s
=> nil
irb(main):004:0> /dda/=~s
=> nil
irb(main):005:0> /dfa/=~s
=> 2
irb(main):006:0> /a/=~s
=> 0
irb(main):007:0> /团圆/=~s
=> 15
irb(main):008:0> /--/=~s
=> 5
irb(main):009:0> 

命令行参数

#!/usr/bin/ruby
#encoding:UTF-8
puts "1:  #{ARGV[0]}"
puts "2:  #{ARGV[1]}"
i=0
ARGV.each do  |arg|
    i+=1
    puts  "#{i}:#{arg}"
end

[maisipu@fedora learn]$ ./learn2.rb 1 2 3  abc "222"  "qqq"
1:  1
2:  2
1:1
2:2
3:3
4:abc
5:222
6:qqq
[maisipu@fedora learn]$ 

读文件

#!/usr/bin/ruby
#encoding:UTF-8
if ARGV[0]==nil then
   fileName="learn2.rb"
else
   fileName=ARGV[0]
end 
data=File.read(fileName)
print data
[maisipu@fedora learn]$ ./learn2.rb "learn1.pl"
#!/usr/bin/perl
use 5.36.1;
my $fileSName="wing.rpm";
my $fileDName="wing2.rpm";
my $myEncode=":raw :bytes";
my $fileSHandle   = undef;
.....
.....
[maisipu@fedora learn]$ ./learn2.rb
#!/usr/bin/ruby
#encoding:UTF-8
if ARGV[0]==nil then
   fileName="learn2.rb"
else
   fileName=ARGV[0]
end 
.....
....

标签:bin,web,end,ARGV,疑难,num,irb,main,Ruby
From: https://www.cnblogs.com/waterperl/p/17513206.html

相关文章

  • Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)
    目录一.系统环境二.前言三.仪表板(Dashboard)简介四.部署Kubernetes仪表板(Dashboard)五.访问Kubernetes仪表板(Dashboard)5.1使用token登录Dashboard5.2对sa账号kubernetes-dashboard授权5.3访问Dashboard六.总结七.附加信息一.系统环境本文主要基于Kubernetes1.21.9和Linux操作......
  • appium报错AttributeError: 'WebDriver' object has no attribute 'find_element_by_i
    解决方法:fromappium.webdriver.common.appiumbyimportAppiumBy#导入AppiumBysearch=driver.find_element(AppiumBy.ID,"com.android.settings:id/search")#编写格式:driver.find_element(by=AppiumBy.ACCESSIBILITY_ID,value='accessibility_id')思考流程:......
  • 常见的Web应用程序架构
    资料:Commonwebapplicationarchitectures|MicrosoftLearn微软的这篇文章,讨论了常见的web应用程序架构。大概可以分为三类:1,新建的asp.netCoreweb项目,单体架构,在单个项目场景中,通过使用文件夹来实现关注点分离。如图: 单体架构随着业务发展,可能需要新加很多文件夹,各个文......
  • WP CTF-Web 攻防世界 GFSJ0475 get_post
    「场景」进入场景后提示请用GET方式提交一个名为a,值为1的变量「思路」根据提示在url后加上?a=1,回车发送请求。出现新提示。请再以POST方式随便提交一个名为b,值为2的变量打开brupsuite,配置本地代理为brupsuite中proxy的地址和端口号,刷新浏览器页面,brupsuite捕获到请求......
  • WP CTF-Web 攻防世界 GFSJ0474 view_source
    「场景」题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。「思路」进入场景,右键无法使用,按F12,打开开发者工具,切换到ELements标签页,发现flag...「工具」「知识拓展」......
  • 使用宝塔webhook快速部署github仓库上的项目
    1、宝塔安装webhook点击添加Hook,输入如下命令。cd/www/wwwroot/project_namegitpull点击查看密钥,可以得到hooks的地址和密钥。2、Github上设置Webhooks填入上面得到的地址和密钥 3、为了git拉取免登录,需要在服务器安装ssh证书ssh-keygen-trsacat~/.ssh/id_r......
  • Spring 赌上未来一击,推出响应式框架 WebFlux,代码更优雅,性能更强!
    Spring-webflux简介spring-webflux是spring在5.0版本后提供的一套响应式编程风格的web开发框架,大量测评证明,使用WebFlux开发接口能够大幅提升接口的吞吐量。这个框架包含了spring-framework和springmvc,它可以运行在Netty、Undertow以及3.1版本以上的Serlvet容器上。你可以在项......
  • webuploader http大文件断点续传上传
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • web和java哪个就业更好?
    首先,要区分两种开发语言的特点:Java是一种后台的语言,类似于php,主要做的就是把数据库搭建好,以及数据放置到网页当中,java是比较复杂的编程语言。Web前端开发相对应的职位可能就是一些web前端开发工程师,主要工作是把ui设计师设计好的psd利用html,制作成网页,web前端工程师布局网站的结......
  • 靳宇灵 | FastIm即时通讯系统websoket端口被占用后解决命令
    您可以使用以下命令来查看占用端口2088的程序:对于Linux/macOS系统:sudolsof-i:2088对于Windows系统:netstat-ano|findstr:2088查看结果后,您将看到占用端口2088的程序的PID(进程ID)。通过查找这个PID,您可以找到占用该端口的程序或进程。根据查询结果来看,进程ID(PID)为21754、21......