2011-07-28 22 views
5

benim jruby kodundan java benim değişkenleri değiştirmek için whant diyorJRuby kodundan java değişkenlerini değiştirin? Başlık olarak

ben henüz hiçbir değeri yoktur benim Java kodunda bir tamsayı var, Ve benim JRuby kodu ile whant bu değişkeni vermek daha spesifik olmak gerekirse değer, ama bunun nasıl yapılacağı hakkında hiçbir fikrim yok.

Bu i JRuby koduyla var ne kadar uzakta ..

require 'java' 
puts "Set player health here" 
playerHealth = 3 # Setting player health here! 

Ama henüz java şey yazdım değil. Bu, tüm var bugüne kadar hemen hemen ..

Sana JRuby içinde bir Java değişkeni değiştirmek için böyle bir şey yapabileceğini böylece, sen Java dan JRuby motorunu çağırmak için çalışıyoruz anladığım
+0

Bunu kontrol edin. http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby. Örneğin >> java.lang.System.setProperty "myprop", "123" => nil >> java.lang.System.getProperty "myprop" java.lang.System.getProperty "myprop" => " 123 " –

+0

Java'yı jruby'den mi arayacaksınız, yoksa jruby'den java mı? Ayrıca, neden farklı bileşenler eachothers değişkenleri ile uğraşıyor? Muhtemelen tek bir dilde bile iyi bir fikir değildir. Neden değişkeninizi bir yöntem çağrısından döndürmeyle ayarlamıyorsunuz? – Rob

+0

Bunu nasıl yapacağımı bilmiyorum .. – Rakso

cevap

2

:

import javax.script.*; 

public class EvalJRubyScript { 
    public static void main(String[] args) throws Exception { 
     ScriptEngineManager factory = new ScriptEngineManager(); 

     int playerHealth = 0; 

     ScriptEngine engine = factory.getEngineByName("jruby"); 
     ScriptContext context = engine.getContext(); 
     context.setAttribute("playerHealth", playerHealth, ScriptContext.ENGINE_SCOPE); 

     try { 
      engine.eval("$playerHealth = 42"); 
      playerHealth = (Integer)context.getAttribute("playerHealth", ScriptContext.ENGINE_SCOPE); 

      System.out.println(playerHealth); 
     } catch (ScriptException exception) { 
      exception.printStackTrace(); 
     } 
    } 
} 

Notta playerHealth genel bir değişken olduğunu unutmayın.

Kodu değerlendirmek yerine harici bir JRuby komut dosyasını yüklemek istiyorsanız, daha fazla ayrıntı için this link'a bakın.

İlgili konular