groovy 패키지 (PK) Java IOC

N. 오랫동안 글 을 쓰 지 않 았 습 니 다. 오늘 갑자기 생각 이 떠 올 랐 습 니 다. 적어 놓 으 세 요. 쓸데없는 말 하지 말고 일 을 하 세 요. 먼저 몇 단락 의 코드 를 보 세 요.
 화 해 를 구하 다
 
def sum(n)
{
total  =  0
for(int i  =  2;  i  <=  n;  i  +=  2)
{
total  +=  i
}
total
}
println
"Sum  of  even  numbers  from  1  to  10  is  ${sum(10)}"

 
 곱셈
 
def product(n)
{
prod  =  1
for(int i  =  2;  i  <=  n;  i  +=  2)
{
prod  *=  i
}
prod
}
println
"Product  of  even  numbers  from  1  to  10  is  ${product(10)}"
def sqr(n)
{
squared  =  []
for(int i  =  2;  i  <=  n;  i  +=  2)
{
squared  <<  i  **  2
}
squared
}

 
 위의 3 단 코드 는 간단 한 연산 일 뿐 입 니 다. 만약 에 우리 가 일반적인 쓰기 방법 에 따라 이 렇 습 니 다. 만약 에 당신 이 코드 만 쓸 줄 안다 면 소프트웨어 개발 을 배우 지 않 는 것 이 좋 습 니 다. 왜 우 리 는 가능 한 한 자신의 일 을 간단하게 해 야 합 니까? 당신 은 3 개의 연산 이 3 가지 방법 을 써 야 한다 고 생각 하지 않 습 니까?
만약 에 우리 가 IOC 를 생각해 보면 한 방법 으로 정 의 된 매개 변수 에서 인터페이스 유형 을 정의 한 다음 에 실제 호출 에서 구체 적 인 유형 을 이 방법 에 전달 합 니 다.이것 은 IOC 의 구현 이다!
그럼 이제 폐쇄 를 살 펴 보 겠 습 니 다.
 
def pickEven(n,  block)
{
for(int i  =  2;  i  <=  n;  i  +=  2)
{
block(i)
}
}
pickEven(10,  {  println it  }  )

 
 위의 코드 는 자바 의 뜻 에 따라 이전 IOC 의 실현 이 라 고 할 수 있 습 니 다. 왜 우리 의 block 은 추상 적 인 유형 입 니까? 맨 아래 에 pick Even (10, {println it}) 방법 을 호출 하여 block 을 폐쇄 {println it} 로 대체 하 였 습 니까? (groovy 의 폐쇄 도 대상 이 고 모든 것 이 대상 입 니 다) {println it} 은 실제 유형 입 니 다. 그 렇 죠?그렇다면 위의 3 단 코드 는 모두 폐쇄 로 이 루어 지 는 것 은 어 떨 까?
 
pickEven(10)  {  println it  }

 
 먼저 설명 하 세 요.
이 코드 {println it} 방법 밖 에 있 습 니 다. groovy 에서 패 킷 을 닫 는 것 이 마지막 매개 변수 라면 방법 외 에 추출 할 수 있 습 니 다.
화 해 를 구하 다
 
total  =  0
pickEven(10)  {  total  +=  it  }
println
"Sum  of  even  numbers  from  1  to  10  is  ${total}"

 
 곱셈
 
product  =  1
pickEven(10)  {  product  *=  it  }
println
"Product  of  even  numbers  from  1  to  10  is  ${product}"

 
 어 땠 어 요?
groovy 의 폐쇄 는 자바 의 IOC 원리 보다 더 WOW!!!!
패 킷 을 닫 는 것 은 코드 블록 이 고 groovy 에서 패 킷 을 닫 는 것 이 대상 입 니 다. 그러면 우 리 는 먼저 방법 을 정의 할 수 있 습 니 다. 방법 중의 하 나 는 패 킷 을 닫 는 것 입 니 다. (패 킷 을 마지막 매개 변수 위치, 개인 의견 으로 정의 하 는 것 이 좋 습 니 다. 그러면 우 리 는 간략하게 쓸 수 있 기 때 문 입 니 다) 그러면 A 방법 은 마지막 매개 변수 위치 에서 패 킷 을 정의 합 니 다.B 방법 은 A 를 호출 할 때 A 방법 이 해 야 할 일 을 A () {XXX} 의 XXX 에 적 을 수 있 습 니 다!!
 
물건 은 여기까지 썼 습 니 다. 모든 사람의 생각 을 이해 할 수 있 는 지 없 는 지 는 groovy 에서 즐거움 을 찾 으 세 요!

좋은 웹페이지 즐겨찾기