Ruby学习笔记之基础

C++面试八股文 和静态多态(又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数),其中动态多态是通过虚函数实现的,虚函数是类的成员函数,存在存储虚函数指针的表叫做虚函数表,虚函数表是一个存储类成员虚函数的指针,每个指针都指向调用它的地方,当子类调用虚函数时,就会去虚表里面找自己对应的函数指针,从而实现“谁调用、实现谁”从而实现多态。而C++符号表中的符号不是以函数名命名的,称为函数名修饰规则,虽然函数名相同,但是函数参数等其他属性不同,取的符号也不同,所以不会产生查询歧义的问题,使得函数可以重载。 阅读详情

Ruby基础


字符编码

Ruby中字符串中的编码依赖于其文件的字符编码,可以在文件开头设定文件编码如下:

[Ruby]

#encoding: utf8

# -*- coding: utf-8 -*- # Specify Unicode UTF-8 characters

[/Ruby]

标准输入输出

puts和putc 用来输出

printf用来格式化输出

gets用来读取,但是还要转换成其他的类型的数据

as:number = Integer(gets)

p是puts的简写,但是可以打印出更加有好的信息

Ruby命名规则


Ruby中的命名规则和C语言相同,面向对象的命名则是驼峰法。

全局变量

Ruby中有全局变量,这个和其他语言不同。又因为Ruby是一个纯的面向对象的语言,因此全局变量显然不符合面向对象的风格。但是Ruby的全局变量比其他语言更加随便,因为他不需要在顶层空间中定义,在任何空间中只需要在变量名前面加上$就可以声明一个全局变量,但是在Ruby中完全不建议使用全局变量。

def a_scope

$var = "some value"

end

def another_scope

$var

end

Ruby中通用布尔规则

在ruby中除了nil和false以外,其他的值都是true

命令行参数

ARGV存放了所有的命令行参数

动态语言的作用域规则

for,while,unitle等流程控制结构中,其中声明的变量在流程结构后面还存在,这个跟静态语言的大不相同,但是注意块中变量都是局部的。

并行赋值

@name, @block = name, block

a, b = 1, 2, 3, 4 # a=1, b=2

c, = 1, 2, 3, 4 # c=1

比较操作符


eql?

两个对象的值和类型都必须相等,因此1 == 1.0为true,而1.equ?(1.0)为false

equal?

这是传统的用来比较两个引用的对象是否是同一个,而==则用来比较两个对象是否相等

===

=~

流程控制


for


Ruby中的for语句和Python中的很像。

for i in ['fee', 'fi', 'fo', 'fum']

print i, " "

end

for i in 1..3

print i, " "

end

for i in File.open("ordinal").find_all {|line| line =~ /d$/}

print i.chomp, " "

end

类支持for

只要类实现了each方法就可以支持for语句,yield的参数回传递给for中的迭代变量

class Periods

def each

yield "Classical"

yield "Jazz"

yield "Rock"

end

end

periods = Periods.new

for genre in periods

print genre, " "

end

=》sical Jazz Rock

建议

Ruby中的for语句都是调用对象中的each方法,因此建议不使用for而直接使用额啊传方法来代替。

while


while weight < 100 and num_pallets <= 30

pallet = next_pallet()

weight += pallet.weight

num_pallets += 1

end

until

until和while相反,在开始的时候表达式是true,那么就跳出循环

case


case

when song.name == "Misty"

puts "Not again!"

when song.duration > 120

puts "Too long!"

when Time.now.hour > 21

puts "It's too late"

else

song.play

end

这儿没有匹配,case相当于一个多重if语句

kind = case year

when 1850..1889 then "Blues"

when 1890..1909 then "Ragtime"

when 1910..1929 then "New Orleans Jazz"

when 1930..1939 then "Swing"

when 1940..1950 then "Bebop"

else "Jazz"

end

注意如果不换行,那么必须使用then

类型匹配

case shape

when Square, Rectangle

# ...

when Circle

# ...

when Triangle

# ...

else

# ...

end

if


if count > 10

puts "Try again"

elsif tries == 3

puts "You lose"

else

puts "Enter a number"

end

注意if语句中,最后一个表达式的值是最后的if的结果,因此上面的语句还可以表达成

if count>10

"Try again"

elseif tries == 3

"you lose"

else

"Enter a number"

可以把if语句写到一行上,那么必须在if后面加上then

minimum = if x < y then x else y end

unless

unless==if not

statement modifier

简单来说,就是单行的条件判断

square = square*square while square < 1000

puts "Danger, Will Robinson" if radiation > 3000

打断


1.打断操作符可以用在循环和迭代的块语句中

2.如果和statement modifier合用,那么可以跟简单地表示

break

redo

redo表示把当前的循环再次执行,但是不在计算循环变量,就好像仅仅执行一次一样。

next

then

then在控制结构中是可选的,但是如果判断条件和控制快在一行时必须加上then

三目表达式

cost = duration > 180 ? 0.35 : 0.25

引用测试

o == nil # Is o nil?

o.nil? # Another way to test

Ruby的变量加入规则

在Ruby中,只要在程序中出现了变量的初始赋值,那么这个变量就已经存在于程序中,不论这个赋值是否执行。(这个和传统的想法不同:程序只有在执行赋值时才把变量加入)。

例如下面的赋值:

n = 100 if false

这儿的赋值并没有执行,但是程序空间中已经有这样的一个变量n,这是由于没有赋值,他的值为nil。

注意:

1.对于常量,这个规则有一点不同,因为常量必须有一个初始值,如果向上面的这样,那么常量是一个未初始化状态,引用它会出错

表达式的值

在Ruby中每一个表达式都有一个值,除了While和until没有。

甚至表达式还可以一边返回值,一边抛出异常

if n < 1

raise "argument must be > 0"

elsif n == 1

1

else

n * factorial(n-1)

end

当然,也可以赋值

a = if true then 10 else 20 end



Easy3D&CGAL文章目录汇总 阅读详情

相关推荐

HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。 查看master上namenode启动日志,如下: Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdat...

qq_34727158的博客 1764

Ruby学习笔记-基础语法

#!/usr/bin/ruby -w # puts "test words!" ################Here Document # print <<EOF # 第一种创建here document 的方法。 # 多行字符串,类似前端中的 pre? # EOF # print <<"EOF" # 第二种创建here document 的方法。 # 多行字符串 # EOF ###数据类型 # # print("a".ord) #小写字母a的字符编

郑德帅 793

别光看教程了!手把手带你用STM32F103C8T6最小系统板点亮第一个LED(附完整电路图)

本文详细介绍了如何使用STM32F103C8T6最小系统板点亮第一个LED,从硬件连接到软件开发环境搭建,再到编写和下载程序,手把手教你完成STM32入门的第一步。适合初学者快速上手STM32开发,附完整电路图和代码示例。

weixin_28678831的博客 194

programming ruby 2nd学习笔记

本文是我学习programming ruby 2nd的笔记,由于我熟悉的语言是java,python,所以会在其中夹杂一些ruby与java,python的比较,文中的其他语言一律指java,python。格式按原文的顺序,我只是按我阅读的顺序来更新本文,若没时间,更新会很慢。好像我的电子文档有问题,不少目录结构不正确。第一版序言 Ruby创始人的序言第二版序言 

行云流水 1万+

STM32F103C8T6蓝莓派用HAL库GPIO模拟SPI驱动MAX31865读取PT100温度(附完整代码)

本文详细介绍了如何在STM32F103C8T6蓝莓派开发板上使用HAL库通过GPIO模拟SPI驱动MAX31865读取PT100温度传感器的完整方案。内容包括硬件连接、CubeMX配置、GPIO模拟SPI实现、温度计算算法及常见问题排查,并附有完整代码示例,帮助开发者快速实现高精度温度测量。

weixin_30684743的博客 937

基于51单片机的校园一卡通系统(仿真)

本次设计利用LCD1604设计可视化界面,矩阵按键执行交互,继电器模拟门的开关,系统集成考勤系统、门禁系统、消费系统、充值系统。同时利用LED灯、蜂鸣器进行指示,方便用户查看状态。

MGT_9796的博客 1552

Ruby学习笔记(一)---初识Ruby

近日,了解到一门叫做Ruby的脚本语言,一门由日本工程师发明的,面向对象的语言。 简介 Ruby是一种功能强大的面向对象的脚本语言,可以使用它方便快捷地进行面向对象程序设计。与Perl类似,而且Ruby具有强大的文本处理功能,使文本处理变得简单。此外还可以方便地使用C语言来扩展Ruby的功能。 特点 Ruby被称为 “最快的开发语言” ,初步了解,Ruby有以下特点: 解释型执行,方便快捷 Ruby是解释型语言,其程序无需编译即可执行。 语法简单、优雅 语法比较简单,类似Algol系语法。 完全

卢楷方的博客 1182

基于分水岭分割进行肺癌诊断

近年来,肺癌的发病率和病死率均迅速上升,目前已居所有癌症之首。随着肺癌病人数量的增加,医生对肺部 CT 图像进行研判的工作量也增加了不少,在这种情况下难免工作效率降低甚至会出现误诊。为了帮助医生减少重复性工作,对肺部 CT 图像进行计算机辅助检测的技术就被广泛应用于对肺癌的诊断和治疗过程中。医学 CT 图像处理主要是研究医学图像中的器官和组织之间的关系,并进行病理性分析。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1568

Ruby学习笔记_索引贴

   学习Ruby也有段时间了,在学习的同时也做了些笔记并发到了园子睐。看到园子里的大虾们在出了一系列文章后都会做个索引贴,这样很方便,所以本人今天抽了个空就把它整理了下,方便自己的同时也方便感兴趣的朋友。 Ruby学习笔记目录:   1、Ruby入门   2、Ruby-循环与选择结构   3、Ruby-String   4、Ruby-Array   5、Ruby-Hash  ...

weixin_30894583的博客 120

SPICE框架:自博弈提升大语言模型推理能力

自博弈训练是提升大语言模型推理能力的前沿技术,其核心思想是通过模型自我对话实现持续迭代优化。SPICE框架创新性地采用文档驱动的自博弈机制,结合思维链提示和迭代式上下文扩展,显著提升模型在数学证明、逻辑推理等复杂任务中的表现。该技术在代码生成、金融分析等工程场景中展现出23%-41%的性能提升,其关键技术包括多样性控制、质量过滤和记忆管理。随着与RLAIF等强化学习方法的结合,这种训练范式正在推动大模型向更接近人类思维方式的推理能力进化。

weixin_28686771的博客 402

《备考系统架构设计师》 - 专栏介绍和目录

本专栏包括所有历年真题及详解、章节知识核心总结、精选高分论文、补充知识、专题总结等。欢迎订阅专栏。

数据知道的博客 4万+

【Ruby学习笔记】3.Ruby 语法及数据类型

本章介绍Ruby的语法和数据类型。

qq_62052372的博客 551

一分钟了解 Claude Code

在 AI 编程工具百花齐放的 2026 年,凭借其终端原生、全项目理解、自主执行的核心能力,开辟了全新赛道。它不是要替代你的 IDE 或编辑器,而是成为你最强大的终端扩展,让你在熟悉的环境中,用自然语言驱动开发,专注创意,而非琐事。

h a 6 6 6 c k 为 你解决复杂难题! 2207

Ruby学习笔记

Ruby学习笔记链接:http://my4java.itpub.net/ ...

ctpaknc9526的博客 61

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ruby on rails学习笔记一

摘要 rails是使用了ruby语言开发的web应用框架,目的是通过解决快速开发中的共通问题,简化web应用的开发。本文参考:https://ruby-china.github.io/rails-guides rails哲学包含两大指导思想: 1、不要自我重复(DRY),DRY是软件开发中的一个原则,意思是“系统中的每一个 功能都要具有单一、准确、可信的实现”,不能重复表述同一件事情,写出...

weixin_42297518的博客 687

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Ruby学习笔记-高级教程:方法、类、正则

=begin 1.类 =end # class Box # def initialize(w,h) # #给实例变量赋值 # @width,@height = w,h # print "宽,高:",@width,@height # end # end # box = Box.new(w = 100,h = 200) =begin 访问器(getter) & 设置器(setter)方法 -end # # 定义类 # class Box # # 构造函数 # def

郑德帅 438

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ruby学习笔记之一:ruby概述

 Ruby的历史:Ruby语言的发明人是日本人松本行弘(Matsumoto Yukihiro),大家亲切的称呼他"Matz"。可能会出乎大家的意料,Ruby并不是一种近年来才诞生的语言,它的历史可以追溯到1993年,Ruby之父Matz开始对脚本语言感兴趣。在通过一些分析和思考之后,Matz认为脚本语言是可以变得很强大和灵活的,于是他准备把脚本语言作为他的发展方向。 和很多人一样,Matz是一

fuliangliang的Blog 2684

ruby学习笔记

ruby学习笔记(1)      摘要: 发现了这个学习ruby的好地方,每天就尽量抽点时间学习一下吧。  阅读全文 ruby学习笔记(2)      摘要: 这节课的内容明显多了,哈哈......  阅读全文 ruby学习笔记(3)      摘要: 迈开学习ruby的大步.......  阅读全文 ruby学习笔记(4)      摘要: 学习ruby的第4课......

weixin_34273481的博客 150

《Ruby》学习笔记

前言 笨办法学Rubyearnrubythehardway.org 进入下面这些网站bitbucket.org、github.com、gitorious.org、launchpad.net、sourceforge.net,搜索“Ruby”,阅读代码

杰之行的博客 363

Ruby学习笔记(1)

是一个完美的面向对象语言。使用 Ruby 的语法比使用 Smalltalk 的语法要容易得多。

Donics的博客 1866

ruby 学习笔记总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34311757的博客 179
上一篇: Ruby学习笔记一之概要
下一篇: Ruby学习笔记之函数
ssjssh
博客等级 码龄15年 12粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值