Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby类实例上的等效操作(到Java)_Java_Ruby - Fatal编程技术网

Ruby类实例上的等效操作(到Java)

Ruby类实例上的等效操作(到Java),java,ruby,Java,Ruby,我是一个Java和长期从事C语言的人,一直在努力学习Ruby。至少可以说,这是一次令人谦卑的经历 我有以下课程 class Node @@normal def get_normal( n ) @@normal[ :#n ] end def add_normal( n, value ) @@normal[ :#{n} ] = value end end …我正试图用一种只有Java人才会用的方式来使用它,但也许你能帮我澄清一下。(在Java中,我会: clas

我是一个Java和长期从事C语言的人,一直在努力学习Ruby。至少可以说,这是一次令人谦卑的经历

我有以下课程

class Node
  @@normal
  def get_normal( n )
    @@normal[ :#n ]
  end
  def add_normal( n, value )
    @@normal[ :#{n} ] = value
  end
end
…我正试图用一种只有Java人才会用的方式来使用它,但也许你能帮我澄清一下。(在Java中,我会:

class Node
{
   private Map< String, String > normal = new HashMap< String, String >();

   public void addToNormal( String key, String value ) { this.normal.put( key, value ); }
   public String getNormal( String key )               { return this.normal.get( key ); }
}
...
Node node = new Node();
node.addToNormal( "city", "New Orleans" );
System.out.println( node.getNormal( "city" );
简言之,我从中一无所获


我想在散列中使用Ruby符号作为键,但我想学习的最重要的事情是以我使用上面Java类的方式使用Ruby类。或者,这是错误的想法?如果你能抽出时间,请调整我的类定义和/或我试图用它做什么,或者一般地批评一下。非常感谢太多了!

这是你的ruby课程

class Node
  def initialize
    @normal = {}
  end

  def get_normal(n)
    @normal[:n]
  end

  def add_normal(n, value)
    @normal[:n] = value
  end
end
在你的irb中

node = Node.new
node.add_normal(:city, "New Orleans")
puts node.get_normal(:city)
两张纸条

  • 您想使用实例变量,而不是类变量来执行类似的操作。实例变量是
    @my\u var
    ,类变量是
    @@my\u var

如果您将
@normal={}
保留在类级别,那么在执行时它将是
nil
,因此您将放入
def initialize
,这是类的构造函数。

这是您的ruby类

class Node
  def initialize
    @normal = {}
  end

  def get_normal(n)
    @normal[:n]
  end

  def add_normal(n, value)
    @normal[:n] = value
  end
end
在你的irb中

node = Node.new
node.add_normal(:city, "New Orleans")
puts node.get_normal(:city)
两张纸条

  • 您想使用实例变量,而不是类变量来执行类似的操作。实例变量是
    @my\u var
    ,类变量是
    @@my\u var

如果你离开
@normal={}
在类级别,在执行时它将是
nil
,因此您输入了
def initialize
,这是类的构造函数。

这确实有效,并给了我一些可以使用的东西。我发现的Googlizable示例似乎总是带有预初始化的哈希、数组等,带有打印我今天下午没有找到更多的实际例子。非常感谢!欢迎来到Ruby!我自己来自java和C++,我喜欢玩Ruby……每分钟。)这不管用,因为你总是设置和获取相同的密钥。既然你们都在学习,我就让你们去弄清楚原因。是的@JörgWMittag,我知道:)我只是在复制OP想要的东西。这确实管用,给了我一些可以玩的东西。我发现的Googlizable示例似乎总是带有预初始化的哈希、数组等,并带有打印它们的示例调用。今天下午我没有找到更多的实际例子。非常感谢!欢迎来到ruby!我自己来自java和C++,我喜欢玩Ruby……的每一分钟…这不起作用,因为您总是设置和获取相同的密钥。既然你们都在学习,我就让你们去弄清楚原因。是的@JörgWMittag,我知道:)我只是在复制OP想要的东西。