C# 我可以在Ruby/Java/C中创建这样的对象吗?
您能从名为C# 我可以在Ruby/Java/C中创建这样的对象吗?,c#,java,ruby,object,naming-conventions,C#,Java,Ruby,Object,Naming Conventions,您能从名为Trung.nguyenn的类创建对象吗?因为nguyenn不是一个方法吗?在Java C#和Ruby中,您不能创建名称中带有的变量 // C# and Java Object Trung.NguyenThe = ""; # Ruby Trung.NguyenThe = "" 该变量名在所有三种语言中都是非法的 如果要执行类似的操作,请使用下划线\uu // C# and Java Object Trung_NguyenThe = ""; # Ruby Trung_NguyenThe
Trung.nguyenn的类创建对象吗?
因为nguyenn
不是一个方法吗?在Java C#和Ruby中,您不能创建名称中带有
的变量
// C# and Java
Object Trung.NguyenThe = "";
# Ruby
Trung.NguyenThe = ""
该变量名在所有三种语言中都是非法的
如果要执行类似的操作,请使用下划线\uu
// C# and Java
Object Trung_NguyenThe = "";
# Ruby
Trung_NguyenThe = ""
在Java C#和Ruby中,不能创建名称中带有
的变量
// C# and Java
Object Trung.NguyenThe = "";
# Ruby
Trung.NguyenThe = ""
该变量名在所有三种语言中都是非法的
如果要执行类似的操作,请使用下划线\uu
// C# and Java
Object Trung_NguyenThe = "";
# Ruby
Trung_NguyenThe = ""
首先,对象没有名称。类和变量可以 所以我假设你问的是关于用句点命名类的问题(基于你最后的评论) 直截了当的答案是“不”,但可以使用名称空间/包或内部类来模拟 名称空间:
namespace Trung {
public class NguyenThe {}
}
// Usage:
namespace Whatever {
public class Client {
public main() {
var x = new Trung.NguyenThe();
}
}
}
内部类:
namespace Whatever {
public class Trung {
public class NguyenThe {}
}
// Usage:
public class Client {
public main() {
var x = new Trung.NguyenThe();
}
}
}
(注意:这是C#代码,但我相信Java也可以这样做。我想Ruby也有同样的概念。)首先,对象没有名称。类和变量可以 所以我假设你问的是关于用句点命名类的问题(基于你最后的评论) 直截了当的答案是“不”,但可以使用名称空间/包或内部类来模拟 名称空间:
namespace Trung {
public class NguyenThe {}
}
// Usage:
namespace Whatever {
public class Client {
public main() {
var x = new Trung.NguyenThe();
}
}
}
内部类:
namespace Whatever {
public class Trung {
public class NguyenThe {}
}
// Usage:
public class Client {
public main() {
var x = new Trung.NguyenThe();
}
}
}
(注意:这是C#代码,但我相信Java也可以做到。我想Ruby也有同样的概念。)当然。创建一个名为Trung的包。在这个包中创建一个名为nguyenn的类
或者您假设Trung已经是一个类名了吗?当然。创建一个名为Trung的包。在这个包中创建一个名为nguyenn的类
或者你认为Trung已经是一个类名了吗?在Ruby中,没有类名。类只是像其他对象一样的对象,它们被分配给变量,就像其他变量一样
Trung.nguyenn
不是合法的变量名,因此这是不可能的:
class Object
klass = Class.new do
def to_s; 'Hello' end
end
const_set :'Trung.NguyenThe', klass
# NameError: wrong constant name Trung.NguyenThe
end
当然,您可以创建一个对象,用类响应nguyenn
消息,并将该对象分配给名为Trung
的变量,但这不是您要问的问题:
klass = Class.new do
def to_s; 'Hello' end
end
(Trung = Object.new).define_singleton_method(:NguyenThe) { klass }
puts Trung.NguyenThe.new
# Hello
在C#和Java中,句点在类名中也是非法的。C#有一种转义机制,允许您使用其他保留字作为名称,但这种机制不允许使用非法名称,只能使用保留的名称
有人提议在Java名称中增加符号自由度,但到目前为止,还没有实现。在Ruby中,没有类名。类只是像其他对象一样的对象,它们被分配给变量,就像其他变量一样
Trung.nguyenn
不是合法的变量名,因此这是不可能的:
class Object
klass = Class.new do
def to_s; 'Hello' end
end
const_set :'Trung.NguyenThe', klass
# NameError: wrong constant name Trung.NguyenThe
end
当然,您可以创建一个对象,用类响应nguyenn
消息,并将该对象分配给名为Trung
的变量,但这不是您要问的问题:
klass = Class.new do
def to_s; 'Hello' end
end
(Trung = Object.new).define_singleton_method(:NguyenThe) { klass }
puts Trung.NguyenThe.new
# Hello
在C#和Java中,句点在类名中也是非法的。C#有一种转义机制,允许您使用其他保留字作为名称,但这种机制不允许使用非法名称,只能使用保留的名称
有人提议在Java名称中使用更多的符号自由,但到目前为止,它们还没有实现。只是想一想:你为什么还需要这个?从视觉上看,它意味着类型“Trung”中的一个类型“nguyenn”。如果“nguyenn”是普通类“Trung”中的一个特殊类型呢?对不起,各位,我只是想在课堂上创建类。
var x=new{Name=“Trung.nguyenn”}代码>?;)只是想一想:你为什么还需要这个?从视觉上看,它意味着类型“Trung”中的一个类型“nguyenn”。如果“nguyenn”是普通类“Trung”中的一个特殊类型呢?对不起,各位,我只是想在课堂上创建类。var x=new{Name=“Trung.nguyenn”}代码>?;)是的,谢谢你的回答。我知道这样做是违法的,很抱歉我提出了一个雄心勃勃的问题。是的,我修正了它,让它更清晰。我可以用Ruby在课堂上上课吗?(正如下面的人所示)@Dark,是的,你可以在Ruby中创建嵌套类:那么它将是myNewMe=Trung::nguyenn.new
?不错。@Dark,是的,就是那样。是的,谢谢你的回答。我知道这样做是违法的,很抱歉我提出了一个雄心勃勃的问题。是的,我修正了它,让它更清晰。我可以用Ruby在课堂上上课吗?(正如下面的人所示)@Dark,是的,你可以在Ruby中创建嵌套类:那么它将是myNewMe=Trung::nguyenn.new
?不错。@Dark,是的,应该是那样。@DarkCloud:(关于红宝石)有点。您可以在ruby中定义模块内部的类,但是解析模块成员的ruby语法使用:
而不是
(这在ruby中很有意义;模块就像一个静态类,您可以使用
仅解析实例/对象成员)。所以它会变成Trung::nguyenn()
(或者Trung::nguyenn
,在Ruby中也是如此)。@Dark Cloud:(关于Ruby)有点像。您可以在ruby中定义模块内部的类,但是解析模块成员的ruby语法使用:
而不是
(这在ruby中很有意义;模块就像一个静态类,您可以使用
仅解析实例/对象成员)。所以它会变成Trung::nguyenn()
(或者Trung::nguyenn
,这在Ruby中是相同的)。对不起,我不是一个真正的rubist,但我相信Ruby有类名。是的,类是一个对象,但这并不意味着它没有关联的名称——即使这里的“名称”的概念与静态语言有点不同。。。您甚至可以通过调用obj.class.name
动态获取任何对象的类名。。。另外,n类