2016-10-22 6 views
0

이것이 가능한지 알고 싶습니다. 나는 웹 개발자로서 4 년 동안 Javascript를 사용 해왔다. 그래서 나는 익명의 함수를 사용하는 것에 익숙하다. 이제 Processing을 테스트 해보니, 자바 스크립트로 일반적으로하는 모든 것을 어떻게 수행 할 수 있는지보고 싶습니다. 자바 스크립트에서Java 처리, 익명 함수 사용

, 정말 같은 기능을 사용

fn.call(instance,arg1, arg2); 

또는

fn.apply(instance,args); 

이 ... 그러나, 내가 처리에서 그런 일을 할 수 아니에요.

내가 "익명 함수"를 호출하고 인스턴스의 네임 스페이스의 기능을 실행하기 위해 노력하고있어 :

public void resetHealth(){ 
    this.health = 10; 
} 

class Player{ 
    public int health; 
    Player(){ 
     super(); 
     this.health = 10; 
    } 
} 

Player p = new Player(); 

//where it gets prickly: 

resetHealth.invoke(p); 

예상 결과 : 나는 난 무엇을 알고 싶어 print p.health; //returns 0

Java에 대한 일은 잘못되었습니다. 그러나 처리와 관련이있을 수 있습니다. 장기에

+1

왜 resetHealth가 Player 클래스 외부의 함수입니까? 'this'는 이제 그 메소드에서 문맥이나 의미가 없습니다. –

+0

이유는 클래스 내부에 함수를 넣는 대신 함수를 공유하고 전달할 수 있기 때문입니다. 그렇게 할 수있는 방법이 있습니까? –

+0

Java 8 [메소드 참조] (https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html)를 참조하십시오. 그러나 간단하게 [인터페이스] (https://docs.oracle.com/javase/tutorial/java/concepts/interface.html)를 정의하고 대신 해당 인터페이스를 구현하는 객체를 전달하는 것이 좋습니다. "객체를 메서드 안에 넣는 것"은 좋습니다 :) – paulsm4

답변

0

나는 (예 : p.resetHealth())

class Player { 
    public int health; 
    Player() { 
    super(); 
    this.health = 10; 
    } 
    public void resetHealth() { 
    this.health = 10; 
    } 
} 

void setup() { 
    Player p = new Player(); 

    //test, set lower health 
    p.health = 3; 
    println("lowed health to", p.health); 

    //test, call reset health 
    p.resetHealth(); 
    println("reset health to", p.health); 
} 

당신이 만약 당신이 점 표기법을 한 후, 플레이어 클래스 내부 당신의 resetHealth() 함수를 이동 사용하여 호출해야 Daniel Shiffman's OOP Tutorial

을 확인하는 것이 좋습니다 이미 대부분의 처리 기능을 사용하면서 p5.js을 사용하여 집에서 바로 사용해야한다고 생각하는 JavaScript에 익숙합니다.

+0

빠른 응답을 주셔서 감사합니다. 자바에서는 작고 간결한 코드가별로 필요 없다고 생각합니다. 나는 클래스 상속을 잘 활용할 것이고, Javascript로 할 수도있다. –

+0

자바는 컴파일 된 언어이므로 엄격한 유형 변환, 클래스 구조 등과 같이 JavaScript가 해석되는 곳에서 동적 유형에 대해 약간의 유연성이있는 많은 것들이 더 엄격하다는 것을 알 수 있습니다. 자바로 가고 싶다면, OOP와 상속을 잊어 버리고 자바로 처음부터 마치기 시작하십시오. 이것은 언어간에 약간의 차이가 있기 때문에 더 쉽거나 혼동을 덜 수 있습니다. JS 지식을 최대한 활용하려면 p5.js를 사용하는 것이 좋습니다. –