• 클래스, 인스턴스 메소드 차이점 알아보기
  • 데이터 추출 업무
  • 쿼리연습 하기 중요 중요
Long/MAX_VALUE (“/“) => 클래스 메소드 호출
(javadoc java.util.Date) => 자바 에이피아이 브라우저 창 띄어줌
(type Value) => 타입을 알려줌 (type 3) => Long 타입
(.getTime (java.util.Date.)) => 겟타임 함수 호출할때 함수는 앞에 써줌 (java.util.Date.) <- 묶어준 이유는 명확하게 인스턴스를 보여주기 위해서 묶어줌
(+ 1 2) = 1 + 2 => (“+”) 함수라고 생각
=, ==의 차이 =는 타입까지 검사 ==는 대강 검사
inc => 값 증가시키는 함수
dec => 값 감소시키는 함수
rest => 배열에서 맨 앞에 것 빼고 나머지의 값들
#() <= 이름 없는 함수 / #”” <= 정규표현식 / #{} <=sets
Symbols
  • 사용하려고 정의해 놓은 것들을 심볼 이라고 한다.
Keywords
  • 자바에서의 해시맵과 같다.
  • 해시맵 = key – value
  • 일반 스트링과의 차이점은 잘 모르겠다.
  • 명확하게 구분짓기 위해서 사용함
  • 앞에 콜론(:)이 붙음
Lists
  • 어퍼스트로피(‘)는 뒤에 있는 애들은 함수로 판단해서 실행시키지 마라는 의미.
  • ‘(1 2 3 4 5) 이렇게 사용하는 경우는 드물고 (list 1 2 3 4 5)라고 명시적으로 부여하여 사용하는 경우가 많음
  • conj라는 함수는 리스트를 합치는 것이다.(conj(conj(list 1 2 3)4) => (4 1 2 3)으로 배열됨 뒤에 넣은 값이 앞으로 배치됨
  • nth => n번째 것
Vector
  • List나 Vector나 별 차이가 없음
  • 백터는 바로 만들 수 있다는 것이 장점
  • 순서대로 데이터가 담기는 자료구조이다.
  • conj함수는 리스트를 합치는 것이다. 여기선 뒤로 배치됨.
rest와 next의 차이점 ?
last => 마지막 요소 추출
count => 갯수 추출
Sets
  • 집합
  • 이것보다는 백터와 리스트를 많이 씀
  • 셋은 순서가 상관이 없어서  conj를 쓰면 순서의 상관없이 나옴
  • disj =>  conj와 반대. (빼는 것)
  • contains? => 있는지 없는지 확인하는 함수
Maps == 해시
  • (Keywords – values) 식으로 나옴
  • get 메소드 => (get {“” “” “” “”} “찾을 키워드” “디폴트값”) => 마지막 “”의 값에 value값이 나옴, 디폴트값을 지정 안하면 nil이 나옴
(type *1) => 방금 실행한 명령의 타입 알아보기 (3까지 가능)
[제어문 / 조건문 실습]
 test 유닛테스트 하기
project.clj => dependencies : 라이브러리 사용할 것 을 적는 기능
src-projectname-core file 
– ns = namespace (java에서 패키지와 동일)
– defn  => 함수 정의하는 명령어
*메인 메소드 정의후에 실행 가능함*
 
실행시키는 법
– lein rum -m projectname.core
파라미터 여러개 받을때 “&”(앰퍼센트) 사용 => 꼭 한 개 이상 쓰고 그 다음부터 여러개 명시 가능.
decaler => main함수 밑에 써도 가능하게 하는 함수
카피파일 실행 및 삭제해보기
– file-seq : 디렉토리안에잇는 시퀀스들을 만들어서 반환하는 메소드
텍스트파일 읽고 쓰기
– 클로저에도 slurp (한꺼번에 읽어들이는 것) 있다. => 간단하게 읽어들이기에는 좋음
– spit  “텍스트파일” “내용” :append true => 추가하기 (append true를 사용하지 않으면 덮어쓰기)
– with-open => 파일 읽어오기 (클로즈는 알아서 해줌 메소드가 끝날때)
CSV 읽고 쓰기
*reading 해보기*
– let : 변수를 바인딩하는데에 많이 씀