首发:个人博客,更新&纠错&回复

学不同语言,常将它们的基础语法搞混,例如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

最新文章

  1. 折腾了1周把程序从sqlserver迁移到oracle上了,每折腾一次需要耗费1周时间
  2. OS X 升级 Yosemite 后,Intellij IDEA 与 VirtualBox 启动失败
  3. linux极点五笔无法输入词组_ibus设置
  4. Android layout_gravity失效的问题
  5. Linux kernel驱动相关抽象概念及其实现 之“linux设备模型kobject,kset,ktype”
  6. hasOwnProperty方法的使用
  7. Jquery autocomplete 插件示例
  8. Javascript页面跳转与浏览器兼容
  9. Java 兑换ObjectC代码
  10. [Centos] mod_wsgi 安装流程以及遇到问题解决办法。apxs: command not found 或 Sorry, Python developer package does not appear to be installed.
  11. CentOS-Desktop版service network restart报错
  12. Ubuntu 16.04 LTS安装 TeamViewer
  13. 第二十八条:利用有限制通配符来提升API的灵活性
  14. Marshal.PtrToStringAnsi中文乱码
  15. cas单点登录防止登出退出后刷新后退ticket失效报500错
  16. e-olymp Problem4196 Chocolate bars
  17. spring cloud 学习(4) - hystrix 服务熔断处理
  18. 在ASP.NET MVC中使用Knockout实践05,基本验证
  19. AndroidManifest.xml文件解析(转帖)
  20. [IMX6]Android6.0移植和分析

热门文章

  1. 分享一个在线生成站点地图SiteMap制作工具
  2. MyBatis的几种批量操作
  3. c++ 符号执行顺序小例子
  4. JavaScript:词法结构
  5. easy_install - pip
  6. cloudsim安装,配置(到eclipse)
  7. springMVC搭建
  8. php——用for循环打印半金字塔、金字塔、正方形、倒金字塔、菱形、空心图形等
  9. Web前端开发基础 第四课(认识CSS样式)
  10. BizTalk开发系列(二十五) SQL Adapter