SlideShare a Scribd company logo
1 of 20
Download to read offline
손창주
목차
Collection
Set, List, Map
Grammer1: Condition
조건문
Grammer2: Loop
반복문
Trigger Context
Collection
(Set, List, Map)
Collection
● 어떤 정보를 담는 것, 하나의 데이터가 아닌 여러 데이터를 담는 것
(자료 수집 대상: Integer, String, Salesforce Record, 등)
Collection(Set, List, Map: 특징)
Collection
Set List Map
1. Set : 순서가 존재X, 중복 허용 X
2. List : 순서 존재O, 중복 허용 O
3. Map : key와 value가 한쌍으로 이루어진 자료구조
Collection(Set, List, Map: 특징)
Set List Map
재원님
배
다솜님
사과
Set List Map
Collection(Set, List, Map: Sample Code)
String banana1 = 'banana';
String banana2 = 'banana';
String apple = 'apple';
String pear = 'pear’;
Set<String> fruits = new Set<String>();
fruits.add(banana1);
fruits.add(banana2);
fruits.add(apple);
fruits.add(pear);
System.debug(fruits);
String banana1 = 'banana';
String banana2 = 'banana';
String apple = 'apple';
String pear = 'pear';
String[] fruits1 = new String[4];
fruits1[0] = banana1;
fruits1[1] = banana2;
fruits1[2] = apple;
fruits1[3] = pear;
System.debug('fruits1(' + fruits1.size() + '): ' + fruits1);
List<String> fruits2 = new List<String>();
fruits2.add(banana1);
fruits2.add(banana2);
fruits2.add(apple);
fruits2.add(pear);
System.debug('fruits2(' + fruits2.size() + '):' + fruits2);
String[] fruits3 = new String[4];
fruits3.add(banana1);
fruits3.add(banana2);
fruits3.add(apple);
fruits3.add(pear);
System.debug('fruits3(' + fruits3.size() + '):' + fruits3);
String banana1 = 'banana';
String banana2 = 'banana';
String apple = 'apple';
String pear = 'pear';
Map<String, String> fruits1 = new Map<String, String>();
fruits1.put('재원님', banana1);
fruits1.put('다솜님', banana2);
fruits1.put('재원님', apple);
fruits1.put('다솜님', pear);
System.debug(fruits1);
System.debug('재원님 과일: ' + fruits1.get('재원님'));
System.debug('다솜님 과일: ' + fruits1.get('다솜님'));
Map<String, List<String>> fruits2 = new Map<String,
List<String>>();
fruits2.put('재원님', new List<String>());
fruits2.put('다솜님', new List<String>());
fruits2.get('재원님').add(banana1);
fruits2.get('다솜님').add(banana2);
fruits2.get('재원님').add(apple);
fruits2.get('다솜님').add(pear);
System.debug(fruits2);
System.debug('재원님 과일: ' + fruits2.get('재원님'));
System.debug('다솜님 과일: ' + fruits2.get('다솜님'));
Grammer1: Conditions
(if/else if/else, switch)
다솜님 과일바구니에
서 사과가 있을 때, 사
과의 개수를 어떻게 셀
까?
고객 유형 중 VIP 고객
에게 특별한 혜택을 주
고 싶을 때 어떻게 하
지?
재원님 과일바구니에
는 사과가 있을까?
Conditions(if, if-else, if-else if-else)
● 조건에 따른 제어
○ if(조건1){
처리1;
}else if(조건2){
처리2;
}else{
처리3;
}
시작
조건1
조건2
처리1
처리2
종료
거짓
참
참
거짓
처리3
Conditions(if, if-else, if-else if-else)
● 조건에 따른 제어
○ switch on 대상(변수){
when 조건값1{
처리1;
}
when 조건값2{
처리2;
}
when else{//나머지
처리2;
}
}
시작
조건1 조건2
처리1 처리2
종료
처리3
else
Grammer2: Loop
(for, for-each, while, do-while)
과일바구니에는 어떤
과일이 있는지 모두 확
인해보고 싶어!
1부터 10까지 로그를
남기려면 어떻게 할 까?
과일바구니에 있는 과일을
특정한 기준에 따라 재원
님과 다솜님에게 나눠주고,
실제로 뭘 가지고 있는지
확인하고 싶어!
Loop(for, for-each, while)
• for: 일정 횟수에 기반한 반복
• for (Integer i = 1; i <=5; i++) {
처리;
……
}
시작
조건
종료
참
거짓
증감식
처리반복
• for-each: 컬랙션에 있는 데이터를 기반한 반복
• for (데이터 : 컬랙션) {
처리;
……
}
• while: 조건에 기반한 반복
• while (조건식) {
처리;
……
}
Loop(do-while)
• do-while: 우선 처리 후 조건에 기반한 반복
• do{
처리1;
}while(조건식);
시작
조건
종료
참
거짓
증감식
처리2
처리1
반복
Loop(continue, break)
• break: 반복문에서 벗어나기
• continue: 반복문 내에서 continue; 뒤에 있는
처리는 진행하지 않고, 다음 반복문으로 이동
• for( Integer i = 1; i<=5; i++ ){
System.debug( i + '번째 반복’ );
}
• for( Integer i = 1; i<=5; i++ ){
System.debug( i + '번째 반복’ );
if( i < 3 ){
continue;
}
System.debug( 'continue 뒤 ' + i + '번째 반복’ );
}
• for( Integer i = 1; i<=5; i++ ){
System.debug( i + '번째 반복’ );
if( I == 3 ){
break;
}
System.debug('break 뒤 ' + I + '번째 반복');
}
시작
조건
종료
참
거짓
증감식
처리반복
Exercise
Map
재원님
배
다솜님
사과
● 과일바구니에 곶감 2개, 사과 2개, 배 1개가
담겨있습니다. 이 때, 재원님에게 곶감 2개와
배 1개를 주고, 나머지는 다솜님에게 주었습니다.
다솜님은 어떤 과일을 가지고 있을까요?
○ 참고: Map의 keySet()을 활용할 수 있습니다.
keySet()은 Map이 가지고 있는 Key 값들을
Set에 담는 것입니다.
Ex. Map<String, String> sample = new Map<String, String>();
sample.put(‘다솜님’, ‘사과’);
sample.put(‘재원님’, ’배’);
Set<String> keys = sample.keyset();
System.debug(‘keys: ‘ + keys);
재원님
곶감1
재원님
곶감2
다솜님
사과2
Trigger Context
Trigger Context
데이터 이벤트
발생
Before Trigger
Validation Rule,
Duplicate Rule
After Trigger
Assignment Rule
System
Validation
Event: Insert, Update, Delete, Undelete
Trigger.isBefore Trigger.isAfter
레이아웃에 정의된 값인지
사용자 프로필 권한에 맞는 필드인지
유효한 필드 형식인지
필드에 정의된 범위(길이)가 맞는지
Auto-response Rule Workflow Rule . . .
Trigger Context
이벤트 시점 이벤트 유형 이벤트 대상 레코드
isBefore isInsert new
isAfter isUpdate newMap
isDelete old
isUndelete oldMap
size
• trigger.new와 trigger.old를 데이터베이스 명령어를 쓸 수 없습니다. (insert, update, delete)
• 무한 반복을 발생할 수 있으며, 이때 Runtime Exception이라는 오류가 발생합니다.
• before trigger에서 trigger.new를 활용해서 필드 값을 변경할 수 있습니다.
• Before trigger → event → after trigger
• after trigger에서 trigger.new는 저장되지 않으며, trigger.old는 읽기만 가능합니다.
• trigger.new는 삭제할 수 없습니다.
Thank You

More Related Content

What's hot

Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
Sung Yub Kim
 
말의여행
말의여행말의여행
말의여행
mil23
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
Kimjeongmoo
 

What's hot (20)

R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
R 시작해보기
R 시작해보기R 시작해보기
R 시작해보기
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
 
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
 
Boost pp 20091102_서진택
Boost pp 20091102_서진택Boost pp 20091102_서진택
Boost pp 20091102_서진택
 
3ds maxscript 튜토리얼_20151206_서진택
3ds maxscript 튜토리얼_20151206_서진택3ds maxscript 튜토리얼_20151206_서진택
3ds maxscript 튜토리얼_20151206_서진택
 
Example
ExampleExample
Example
 
말의여행
말의여행말의여행
말의여행
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
 
자료구조02
자료구조02자료구조02
자료구조02
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작
 
R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째
 
android_thread
android_threadandroid_thread
android_thread
 

Similar to 세일즈포스 서울 어드민 그룹 Trigger 연재 강의 (반복문/조건문)

자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
KimChangHoen
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
Kimjeongmoo
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#
병걸 윤
 
과제 1,2,3
과제 1,2,3과제 1,2,3
과제 1,2,3
mil23
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort Hwp
Kimjeongmoo
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
kd19h
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
jinwookhong
 

Similar to 세일즈포스 서울 어드민 그룹 Trigger 연재 강의 (반복문/조건문) (16)

자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
 
Rdatamining
Rdatamining Rdatamining
Rdatamining
 
Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#
 
이산치1번
이산치1번이산치1번
이산치1번
 
과제 1,2,3
과제 1,2,3과제 1,2,3
과제 1,2,3
 
3콤비네이션
3콤비네이션3콤비네이션
3콤비네이션
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort Hwp
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap[Swift] Data Structure - Heap
[Swift] Data Structure - Heap
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
이산치2번
이산치2번이산치2번
이산치2번
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
 

세일즈포스 서울 어드민 그룹 Trigger 연재 강의 (반복문/조건문)

  • 1.
  • 3. 목차 Collection Set, List, Map Grammer1: Condition 조건문 Grammer2: Loop 반복문 Trigger Context
  • 5. Collection ● 어떤 정보를 담는 것, 하나의 데이터가 아닌 여러 데이터를 담는 것 (자료 수집 대상: Integer, String, Salesforce Record, 등)
  • 6. Collection(Set, List, Map: 특징) Collection Set List Map 1. Set : 순서가 존재X, 중복 허용 X 2. List : 순서 존재O, 중복 허용 O 3. Map : key와 value가 한쌍으로 이루어진 자료구조
  • 7. Collection(Set, List, Map: 특징) Set List Map 재원님 배 다솜님 사과
  • 8. Set List Map Collection(Set, List, Map: Sample Code) String banana1 = 'banana'; String banana2 = 'banana'; String apple = 'apple'; String pear = 'pear’; Set<String> fruits = new Set<String>(); fruits.add(banana1); fruits.add(banana2); fruits.add(apple); fruits.add(pear); System.debug(fruits); String banana1 = 'banana'; String banana2 = 'banana'; String apple = 'apple'; String pear = 'pear'; String[] fruits1 = new String[4]; fruits1[0] = banana1; fruits1[1] = banana2; fruits1[2] = apple; fruits1[3] = pear; System.debug('fruits1(' + fruits1.size() + '): ' + fruits1); List<String> fruits2 = new List<String>(); fruits2.add(banana1); fruits2.add(banana2); fruits2.add(apple); fruits2.add(pear); System.debug('fruits2(' + fruits2.size() + '):' + fruits2); String[] fruits3 = new String[4]; fruits3.add(banana1); fruits3.add(banana2); fruits3.add(apple); fruits3.add(pear); System.debug('fruits3(' + fruits3.size() + '):' + fruits3); String banana1 = 'banana'; String banana2 = 'banana'; String apple = 'apple'; String pear = 'pear'; Map<String, String> fruits1 = new Map<String, String>(); fruits1.put('재원님', banana1); fruits1.put('다솜님', banana2); fruits1.put('재원님', apple); fruits1.put('다솜님', pear); System.debug(fruits1); System.debug('재원님 과일: ' + fruits1.get('재원님')); System.debug('다솜님 과일: ' + fruits1.get('다솜님')); Map<String, List<String>> fruits2 = new Map<String, List<String>>(); fruits2.put('재원님', new List<String>()); fruits2.put('다솜님', new List<String>()); fruits2.get('재원님').add(banana1); fruits2.get('다솜님').add(banana2); fruits2.get('재원님').add(apple); fruits2.get('다솜님').add(pear); System.debug(fruits2); System.debug('재원님 과일: ' + fruits2.get('재원님')); System.debug('다솜님 과일: ' + fruits2.get('다솜님'));
  • 9. Grammer1: Conditions (if/else if/else, switch) 다솜님 과일바구니에 서 사과가 있을 때, 사 과의 개수를 어떻게 셀 까? 고객 유형 중 VIP 고객 에게 특별한 혜택을 주 고 싶을 때 어떻게 하 지? 재원님 과일바구니에 는 사과가 있을까?
  • 10. Conditions(if, if-else, if-else if-else) ● 조건에 따른 제어 ○ if(조건1){ 처리1; }else if(조건2){ 처리2; }else{ 처리3; } 시작 조건1 조건2 처리1 처리2 종료 거짓 참 참 거짓 처리3
  • 11. Conditions(if, if-else, if-else if-else) ● 조건에 따른 제어 ○ switch on 대상(변수){ when 조건값1{ 처리1; } when 조건값2{ 처리2; } when else{//나머지 처리2; } } 시작 조건1 조건2 처리1 처리2 종료 처리3 else
  • 12. Grammer2: Loop (for, for-each, while, do-while) 과일바구니에는 어떤 과일이 있는지 모두 확 인해보고 싶어! 1부터 10까지 로그를 남기려면 어떻게 할 까? 과일바구니에 있는 과일을 특정한 기준에 따라 재원 님과 다솜님에게 나눠주고, 실제로 뭘 가지고 있는지 확인하고 싶어!
  • 13. Loop(for, for-each, while) • for: 일정 횟수에 기반한 반복 • for (Integer i = 1; i <=5; i++) { 처리; …… } 시작 조건 종료 참 거짓 증감식 처리반복 • for-each: 컬랙션에 있는 데이터를 기반한 반복 • for (데이터 : 컬랙션) { 처리; …… } • while: 조건에 기반한 반복 • while (조건식) { 처리; …… }
  • 14. Loop(do-while) • do-while: 우선 처리 후 조건에 기반한 반복 • do{ 처리1; }while(조건식); 시작 조건 종료 참 거짓 증감식 처리2 처리1 반복
  • 15. Loop(continue, break) • break: 반복문에서 벗어나기 • continue: 반복문 내에서 continue; 뒤에 있는 처리는 진행하지 않고, 다음 반복문으로 이동 • for( Integer i = 1; i<=5; i++ ){ System.debug( i + '번째 반복’ ); } • for( Integer i = 1; i<=5; i++ ){ System.debug( i + '번째 반복’ ); if( i < 3 ){ continue; } System.debug( 'continue 뒤 ' + i + '번째 반복’ ); } • for( Integer i = 1; i<=5; i++ ){ System.debug( i + '번째 반복’ ); if( I == 3 ){ break; } System.debug('break 뒤 ' + I + '번째 반복'); } 시작 조건 종료 참 거짓 증감식 처리반복
  • 16. Exercise Map 재원님 배 다솜님 사과 ● 과일바구니에 곶감 2개, 사과 2개, 배 1개가 담겨있습니다. 이 때, 재원님에게 곶감 2개와 배 1개를 주고, 나머지는 다솜님에게 주었습니다. 다솜님은 어떤 과일을 가지고 있을까요? ○ 참고: Map의 keySet()을 활용할 수 있습니다. keySet()은 Map이 가지고 있는 Key 값들을 Set에 담는 것입니다. Ex. Map<String, String> sample = new Map<String, String>(); sample.put(‘다솜님’, ‘사과’); sample.put(‘재원님’, ’배’); Set<String> keys = sample.keyset(); System.debug(‘keys: ‘ + keys); 재원님 곶감1 재원님 곶감2 다솜님 사과2
  • 18. Trigger Context 데이터 이벤트 발생 Before Trigger Validation Rule, Duplicate Rule After Trigger Assignment Rule System Validation Event: Insert, Update, Delete, Undelete Trigger.isBefore Trigger.isAfter 레이아웃에 정의된 값인지 사용자 프로필 권한에 맞는 필드인지 유효한 필드 형식인지 필드에 정의된 범위(길이)가 맞는지 Auto-response Rule Workflow Rule . . .
  • 19. Trigger Context 이벤트 시점 이벤트 유형 이벤트 대상 레코드 isBefore isInsert new isAfter isUpdate newMap isDelete old isUndelete oldMap size • trigger.new와 trigger.old를 데이터베이스 명령어를 쓸 수 없습니다. (insert, update, delete) • 무한 반복을 발생할 수 있으며, 이때 Runtime Exception이라는 오류가 발생합니다. • before trigger에서 trigger.new를 활용해서 필드 값을 변경할 수 있습니다. • Before trigger → event → after trigger • after trigger에서 trigger.new는 저장되지 않으며, trigger.old는 읽기만 가능합니다. • trigger.new는 삭제할 수 없습니다.