클립 Scala 학습 노트 - 개체 편향

2327 단어 가방을 닫다
이전에는 줄곧 폐쇄가 무엇인지 몰랐는데 인터넷에서 한참 동안 찾았지만 폐쇄의 정의만 알았다.
  +      =   

코드는 이해하기 쉬워요. 그럼 언제 국부 변수가 아니죠?먼저 나무를 심는 방법을 정의합니다.
def plantATree(treeName:String)={
  var high= 0
  val taller(meter:Int)={
      high += meter
      println("   ,  "+treeName+",   "+high+"  ")
  }
  taller
}

이 예에서 scala의 함수 플러그인과 관련이 있습니다. 플러그인의 함수는 상부 함수의 변수에 접근할 수 있습니다. 즉,taller라는 함수는high와treeName에 접근할 수 있습니다.자, 이제 이 함수의 목적을 설명하자면plantatree는 말 그대로 나무를 심고 톨러라는 함수를 되돌려주는 것이다. 톨러는 int를 받아들인다. 이 나무가 자랐다는 뜻이다.다음은 나무를 심기 시작합니다.
val treeOne = plantATree("  ")
val treeTwo = plantATree("   ")

사실 지금 우리는 이미 두 개의 클립이 생겼다. 왜냐하면, 우리는 다음과 같은 코드를 실행하고, 우리는 먼저 사과나무를 3미터 높게 자라게 한다.
treeTwo(3)

사과나무:
   ,     ,   3  

지금 우리는 은행나무를 1미터 더 자라게 하고 다음 코드를 실행한다
treeOne(1)

은행나무:
   ,    ,   1  

은행나무와 사과나무는 각각 비국부 변수를 유지하고 있는 것을 발견했다. 왜냐하면 트리네임과 하이는 톨러의 국부 변수가 아니라 상부 함수이기 때문이다.이것이 바로 이른바 폐쇄라는 것은 코드와 비국부 변수를 포장하여 각자 한 세트씩 유지하는 것이다.상부 함수가 실행되었어도
자바가 대상을 대상으로 하는 프로그래밍 스타일에서 방법은 서로 호출할 수 있을 뿐 끼워 넣을 수 없다.자바에서 내부 클래스가 패키지를 닫지 못하게 한다는 뜻이 있다고 생각하십니까? 내부 클래스가 외부 클래스 변수를 호출하려면final이라고 명시해야 하기 때문입니다.자바에 클로즈업이 없기 때문에 변수가 혼란스러워지는 것을 방지하기 위해서입니다.
주제 밖의 말: 물론java8은 천지개벽의 변화를 했고 lambda, 클로즈업도 했고 함수식 프로그래밍도 도입했다. 각종 새로운 특징이 뜨겁게 달아올랐고 scala와 비슷한 파이프 프로그래밍 스타일의Stream API도 추가했다.
관심 있는 링크는 다음과 같습니다.http://kb.cnblogs.com/page/110782/ http://www.cnblogs.com/uptownBoy/articles/1454098.html http://lovejavaei.iteye.com/blog/401167

좋은 웹페이지 즐겨찾기