我会稍等一下。 首先,我今天学到的东西。
Ruby课程内部化
- Ruby proc
- 红宝石产量
Ruby’proc’
这很尴尬。 我在Google上搜索了一下,却找不到“ proc”代表什么。 通常,这些运算符/方法的速记含义是什么,但是除了“过程”之外,我什么也想不出来,在这种情况下,这似乎根本不正确。
Proc对我来说是新的。 JavaScript没有任何名为procs的东西。 但是我想我理解它背后的概念。
多维数据集= Proc.new {| x | x ** 3}
这将创建一个保存代码(| x | x ** 3)的proc对象,并且该proc对象存储在变量’cube’中。 proc基本上是可重用的代码块(在Ruby中也称为“块”),可以将其作为参数传递给方法。 (Ruby中的方法类似于JS中的函数。)
如果将传递第二个方法作为主方法的参数而不是传递proc,则会出现范围问题。 正如user102008解释的那样,“在另一个方法定义中定义一个方法将无法访问外部方法主体中的局部变量…[而proc]从创建它的封闭范围中捕获局部变量,您可以在内部使用这些变量关闭。”
使用的proc的示例:
浮点数= [1.2、3.45、0.91、7.727、11.42、482.911]
round_down = Proc.new {| x | x.floor}
ints = floats.collect( &round_down )
在这里,.collect方法传递了伪参数“ round_down”,这实际上是一个过程。 为了让一个方法接受一个proc作为参数,我们在前面放置一个’&’操作数,以向Ruby发出信号,该proc可以并且在这里被接受为一个参数。
我喜欢proc的想法。 它使代码更模块化,更易于访问,并且使编写使用重复“块”的代码更加容易。 所有这些都与DRY哲学保持一致:不要重复自己。
红宝石的“屈服”
收益对我来说也是新的,我不得不承认这对我来说根本不是直觉。 这篇RubyMonk文章很有帮助。
Yield是在方法定义中使用的关键字,用于将参数拖入其中的方法暂时退出该方法,将其交给“ block” *进行处理,然后重新输入最初调用的方法并在中断的地方进行提取与处理后的参数值。
为什么不只在方法本身内部编写代码,而不必过渡出来,运行一些代码,然后将值返回到方法中呢? 因为方法定义是一个神圣的地方,并且其中刻写的代码也不具有延展性。 相反,通过将方法接收的参数(通过方法调用)发送到要处理的块,程序员可以灵活地编写不同的块以与方法结合使用 。 更少的绝对代码意味着更大的适应性。
*(同样,“块”是一段代码,就像JavaScript中的匿名函数一样,至关重要的是,如果不在其他地方重写整个块,就无法再次调用它。)
在新加坡体育馆内通过新西兰徒步旅行
今天去体育馆做一些高强度的训练。 我弄错了上课的开始时间,所以我爬上了Stair Master,然后才开始攀爬,如果您是严格的健身运动者,也可以踩踏板。 当我发现机器提供的课程时,真是令人惊喜!
这是2016年,所有可能装有屏幕的设备上都装有屏幕。 不用多想,我轻按了屏幕上的“课程”图标,就毫无意外地将自己带入了新西兰的远足径! 镜头看起来像是用低空飞行的无人机录制的。 那是一次很棒的经历。 整个过程感觉80%真实,20%模拟(因为毕竟是在平面屏幕上)。
嗯…
VR的潜力
通过虚拟现实耳机在下一个级别上体验到这一点真是太神奇了。 说够了!
还剩10天
7月只剩下10天了。 十天足够做很多事情,但也不是很多。 几天前,当我尝试恢复从我撕裂的夏普真空机器人中救出的一台小型直流电动机时,我注意到在加速学习过程中需要解决的问题很有成果。 现在,我正在考虑一个值得解决的问题,以再次提高我的学习速度。
明天我将决定在7月的剩余时间里继续工作。
哦,谷歌…

不知道是什么东西(这就是为什么我首先使用Google图片搜索的原因),但是我很确定那不是一件珠宝。 这可能是我的女性手指。