ruby基础语法
学不同语言,常将它们的基础语法搞混,例如if后面有没有(),后面是then还是:还是{,结尾是end还是}。
这种事情毫无技术含量又毫无乐趣可言,但极大地影响流畅度,所以这次再看ruby语法,决定把基础语法记下来,方便以后查看。
代码放到了这里,目前只有ruby,待以后用别的语言时再陆续添加。
内容如下,都是最基础的用法,需要时一看就明白。
#参考:《Ruby完全自学手册》第三章、第四章 #常量大写字母开头,变量小写字母开头
CHANG_LIANG = 1
bian_liang = 2
bian_liang = ""#弱类型 ##分支控制
#if
if 2 > 1 then
#
elsif 2>2 then
#
else
#
end
#if后置
puts "if后置" if 2 > 1
#unless
unless 2 > 1 then
#
else
#
end
#case
case 1+1
when 2 then
#
when 3 then
#
else
#
end ##循环控制
#while
while 1>2
#
end
#until
until 1<2
#
end
#for
for i in (1..3)
#
end
#foreach的另一种写法
(1..3).each do |i|
#可以用break和next控制,next相当于其他语言的continue
end ##面向对象
module MyModule#定义模块
#定义类
class MyClass#类名首字母大写
attr_accessor :myAttr#定义实例变量
def initialize
@myAttr2 = "@定义的实例变量"
end
public#访问控制级别public/protected/private
def myMethod#定义实例方法
puts "在实例方法中输出" + myAttr + @myAttr2
end
end
#继承
class MySubClass < MyClass
end
#定义模块方法
def moduleMethod
puts "MyModule的模块方法"
end
end#模块定义的end
#使用
myClass = MyModule::MyClass.new#实例化对象
myClass.myAttr = "实例变量的值"#为实例变量赋值
myClass.myMethod#调用实例方法
#动态添加方法
def myClass.newMethod
puts "动态添加的方法"
end
myClass.newMethod
#加载另一个文件中声明的模块中的类
load 'ruby_another_module.rb'
anotherClass = AnotherModule::AnotherClass.new#另一个文件中声明的对象
anotherClass.print#调用其方法
#混入
class UseMixin
include MyModule
extend MyModule
end
UseMixin.new.moduleMethod#include语句的作用,成为类的实例方法
UseMixin.moduleMethod#extend语句的作用,成为类的类方法 ##代码段
def blockMethod#调用代码段的方法,其中yield表示运行代码段
yield
end
blockMethod {puts "匿名代码段"}
#带参数的代码段
def blockMethodWithParam(arg, &b)#定义显式使用代码段的函数
b.call arg
end
block = Proc.new{|x| puts x}#定义非匿名代码段
blockMethodWithParam("非匿名代码段", &block)#使用非匿名代码段
blockMethodWithParam("也可以这样使用"){|x| puts x} ##异常处理
begin
#正常代码运行的地方
rescue Error#相当于其他语言的catch
#进行一些调整
retry#重新尝试执行
ensure
#相当于其他语言的finally,无论如何都会运行的地方
end ##基本类型
#整数
a=123_456#可以加下划线
b=0b101010#二进制
c=0123#八进制
d=0xaa#十六进制
e=?a#ascii码
puts d
#浮点数略
#字符串
str = "hello, world"
str = %{你好, "world"}#方便含有引号的内容
str[0] = "我"
puts str
#符号略
#区间
(1..3).each{|a| puts a}
#数组
[1,2,3].each{|a| puts a}
#字典
map = {"键甲"=>"键甲的值", "键乙"=>"键乙的值"}
puts map["键甲"]
#正则表达式
"ab12cd".scan(/\d/){|m| puts m}#正则表达式字面量
puts /\d/.match("ab12cd")[0]#match方法
长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。
ruby基础语法的更多相关文章
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
- Sass的使用和基础语法
sass安装 官网下载ruby的windows安装包,安装时勾选上添加到环境变量add ruby executables to your path.安装完成后打开命令行,ruby -v输出内容则安装完 ...
- Ruby的语法糖
发现Ruby的语法糖好多,比如函数调用,参数列表可以写括号和不写括号.代码块可以用do end 或者 {}. 还有 if,unless后置.等等. 如果看Ruby代码看多了,你会发现,它很多地方的 ...
- Python学习的个人笔记(基础语法)
Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- python基础语法及知识点总结
本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...
- 1月10日 ruby基础教程,查漏补缺; 2月22日 Exception补充
https://ruby-doc.org/core-2.5.0/Exception.html 1月20日练习完1,2章. 第一章 初探 ‘’单引号不执行转义符. \t 制表符.\n 换行符. p me ...
- C#基础语法,快速上収C#
C#代码基础语法 对新手的帮助很大,可以尝试多看看然后在敲敲 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// < ...
- 3-Perl 基础语法
Perl 基础语法Perl借用了C.sed.awk.shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点.Perl 程序有声明与语句组成,程序自上而下执行,包含了循环,条件 ...
随机推荐
- Application中捕获APP中的全局异常
package com.example.administrator.mystudent; import android.app.Application; import android.util.Log ...
- sbt assembly build.sbt content
// import sbt._ // import sbt.Keys._ // import java.io.File // import AssemblyKeys._ name := "n ...
- sbt Getting org.scala-sbt sbt 0.13.12 ...
本地仓库被我搞乱了,一气之下整个删掉了本地仓库,再重启sbt卡在Getting这一步. Getting org.scala-sbt sbt 0.13.12 ... 卡住 补充sbt配置文件: 文件结构 ...
- ArcGIS AddIN 之 DockPanel 界面空白
辛辛苦苦写了个AddIn插件,自己用一切正常,发给别人就弹不出DockPanel, 或者弹出时只有Panel,没有具体的控件.经多次排查,原因是: 使用了第三方的界面控件DotNetBar,开发环境中 ...
- Maven入门系列(二)--设置中央仓库的方法
原文地址:http://www.codeweblog.com/maven入门系列-二-设置中央仓库的方法/ Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布 ...
- dialog弹层的方式
1 增加一个层<div class="dialogLayer"></div>, 要不就利用伪元素 ::before 2 利用box-shadow: 0 0 ...
- vsftpd增加ssl安全验证
查看vsftpd是否支持ssl ldd `which vsftpd`|grep ssl 输出 libssl.so.6 => /lib64/libssl.so.6 (0x00002ba684304 ...
- 【翻译】How To Tango With Django 1.5.4 第二章
2.开始吧! 准备好两个关键的安装包 Python version 2.7.5 Django version 1.5.4 2.1熟悉你自己的系统(我的是windows) 略 2.2安装软件 2.2.1 ...
- 代理传值Delegate
代理方法中加入参数:[delegate passMeToOther:(id)self]:把自己传给别人.
- angularjs backbone 集成requirejs 模块化
首先认识requirejs requirejs是个包加载器,核心功能是模块化管理,可以实现按需加载. 重点是明白 模块化不是按需加载. 模块化的意义: 是通过代码逻辑表明模块之间的依赖关系和执行顺序, ...