- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在阅读“ruby 中的元编程”
这是一本非常棒的书。说真的,它谈到了我在其他地方从未听说过的东西。
我有几个关于对象的具体问题(我在前几章)
我知道 RubyGems gem 将方法“gem”安装到模块内核,以便它显示在每个对象上。他们没有将其放入 Object 类中有什么原因吗?
他谈到当 ruby 寻找方法时,它总是立即向上移动。 “向上”到底是什么意思?我在图中看到了它,只是我不太了解'up'的目的。他没有太多解释那部分。
Object 类的意义何在?为什么这些方法不能直接放在类中?如果每个对象都属于一个类(即使它是类),那么对象、基本对象和内核的意义何在?
String, Array, blah blah 显然是类的一个实例。类也是它自己的一个实例。那么,如果 Class 是 Class 的一个实例……它又是如何继承自 Object 的呢?它在代码中的哪个位置与类和对象相关?
我知道内核包含可以在任何地方使用的 puts 等方法,这与问题 1 相关,但为什么他们不能将其压缩并将其全部放入 Object... 看起来一切都继承自无论如何反对
最佳答案
两者都可以,但通常是 Object
上的方法应该只是处理特定对象的方法。把东西放在 Kernel
里模块更少地关注对象,更多地关注全局。
我认为它的意思是“沿继承链向上”。因此它在子类上寻找方法,然后在该类的父类上寻找方法,直到找到一个或用完父类。
Object
是所有对象的基类,自然是 (至少对于 ruby 1.8)。疯狂的部分是类实际上是 Class
的一个实例。类(class)。 (你明白了吗?)因此将实例方法添加到 Class
会向类对象添加方法,但不会向这些类的实例添加方法。
在 ruby 中几乎所有东西都是对象。 Class.superclass
实际上是 Module
(这就像一个你不能实例化的类)和 Module.superclass
返回 Object
.所以Class < Module < Object
如果 Class
是继承链类(class)。 (至少对于 ruby 1.8)
更多的是惯例。自 Object
可以变得相当大,习惯上将东西放入模块中,然后再组合这些模块。如果该方法不直接处理对象的实例 self
那么该方法不直接属于 Object
.更多全局非对象实例方法,如 gem
进入Kernel
模块来表示它们只是随处可用的方法。
更多关于类对象和继承...
class Foo < Bar
def hi
puts 'Hi!'
end
end
它的功能真的很棒。当然,它定义了一个类对象。现在这个类对象被配置为有一个名字 Foo
, 一个父类 Bar
和一种方法 hi
.此信息有点像此类对象的元数据。
现在类对象Foo
本身是一个实例 Class
.但是Foo
定义一个继承自 Bar
的类. Class
类定义了一个数据结构来存储关于类的元数据。
你可以想到Class
类有点像这样定义:
class Class < Module
# fictional method called on class creation
def set_meta_data(name, superclass, methods)
@name = name
@superclass = superclass
@methods = methods
end
# fictional way in which an instance might be created
def new
instance = Object.new
instance.superclass = @superclass
instance.addMethods(@methods)
instance
end
end
所以一个类对象本身会继承自Class
但它会创建不存在的对象。
以这种方式将类视为对象可能有点费脑筋,但这也是 ruby 很棒的原因。
关于ruby - 关于 Ruby 中 OBJECTS 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813074/
我遵循了一本名为“Sitepoint Full Stack Javascript with MEAN”的书中的教程,我刚刚完成了第 6 章,应该已经创建了一个带有“数据库”的“服务器”。数据库只不过是
在 Jquery 中,我创建两个数组,一个嵌入另一个数组,就像这样...... arrayOne = [{name:'a',value:1}, {name:'b',value:2}] var arra
这个问题在这里已经有了答案: What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wa
我被放在别人的代码上,有一个类用作其他组件的基础。当我尝试 ng serve --aot(或 build --prod)时,我得到以下信息。 @Component({ ...,
我正在测试一些代码,并使用数据创建了一个 json 文件。 问题是我在警报中收到“[object Object],[object Object]”。没有数据。 我做错了什么? 这是代码:
我想打印 [object Object],[object Object] 以明智地 "[[{ 'x': '1', 'y': '0' }, { 'x': '2', 'y': '1' }]]"; 在 ja
我有一个功能 View ,我正在尝试以特殊格式的方式输出。但我无法让列表功能正常工作。 我得到的唯一返回是[object Object][object Object] [object Object]
在使用优秀的 Sim.js 和 Three.js 库处理 WebGL 项目时,我偶然发现了下一个问题: 一路走来,它使用了 THREE.Ray 的下一个构造函数: var ray = new THRE
我正在使用 Material UI 进行多重选择。这是我的代码。 {listStates.map(col => (
我的代码使用ajax: $("#keyword").keyup(function() { var keyword = $("#keyword").val(); if (keyword.
我遇到了下一个错误,无法理解如何解决它。 Can't resolve all parameters for AuthenticationService: ([object Object], ?, [o
我正在尝试创建一个显示动态复选框的表单,至少应选中其中一个才能继续。我还需要获取一组选中的复选框。 这是组件的代码: import { Component, OnInit } from '@angul
我正在开发 NodeJs 应用程序,它是博客应用程序。我使用了快速验证器,我尝试在 UI 端使用快速闪存消息将帖子保存在数据库中之前使用闪存消息验证数据,我成功地将数据保存在数据库中,但在提交表单后消
我知道有些人问了同样的问题并得到了解答。我已经查看了所有这些,但仍然无法解决我的问题。我有一个 jquery snipet,它将值发送到处理程序,处理程序处理来自 JS 的值并将数据作为 JSON 数
我继承了一个非常草率的项目,我的任务是解释为什么它不好。我注意到他们在整个代码中都进行了这样的比较 (IQueryable).FirstOrDefault(x => x.Facility == fac
我只是在删除数组中的对象时偶然发现了这一点。 代码如下: friends = []; friends.push( { a: 'Nexus', b: 'Muffi
这两个代码片段有什么区别: object = nil; [object release] 对比 [object release]; object = nil; 哪个是最佳实践? 最佳答案 object
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我在不同的对象上安排不同的选择器 [self performSelector:@selector(doSmth) withObject:objectA afterDelay:1]; [self per
NSLog(@"%p", &object); 和 NSLog(@"%p", object); 有什么区别? 两者似乎都打印出一个内存地址,但我不确定哪个是对象的实际内存地址。 最佳答案 这就是我喜欢的
我是一名优秀的程序员,十分优秀!