If 문이 없는 프로그래밍 예제
이제부터 비즈니스 구현 시 if 문을 사용하지 마세요.
if를 사용하지 않으면 어떤 이점이 있는지 궁금하시죠? 글쎄요~, 어쩌면 뚜렷한 이점이 없을 수도 있습니다. 문제를 해결하기 위해 사고 방식을 바꾸는 것뿐입니다. if-else에는 아무런 문제가 없지만 경우에 따라 if-else가 너무 많으면 코드 읽기가 어려워질 수 있습니다. 다음은 신비감을 느끼는 데 도움이 되는 몇 가지 예입니다.
코딩 팁: If 문 없이 코딩해 보세요
과제 #1: 숫자 배열에 홀수가 몇 개 있는지 세어보세요.
정수형 배열이 주어지면, if 문에 있는 홀수 개수를 세어보세요. array
const arrayOfIntegers = [1, 4, 5, 9, 0, -1, 5];
if 구현
let counter = 0; arrayOfIntegers.forEach((integer) => { const remainder = Math.abs(integer % 2); if (remainder === 1) { counter++; } }); console.log(counter);
Non-if 구현
let counter = 0; arrayOfIntegers.forEach((integer) => { const remainder = Math.abs(integer % 2); // 偶数除2的余数为零,奇数的余数为一 counter += remainder; }); console.log(counter);
참고: 위의 두 예에서 forEach는 원래 배열을 변경하며 메서드는 변수
이므로 현재 함수형 프로그래밍을 위반합니다. 불변 개념에 대해 걱정하지 마세요. 이 개념은 이 기사의 초점이 아닙니다. 두 가지 예를 비교하면 if 문
의 구현이 더 호환될 수 있으며 배열 요소가 십진수
인 상황에 적응할 수 있습니다. 배열 요소가 부동 소수점 유형인 경우 두 번째 예는 제대로 작동하지 않습니다. 可变的
,违背了当下所提倡的函数式编程immutable
理念,不用在意,不是本文关注点。两个例子比较而言,if语句
的实现可能更具兼容性,可以适应于数组元素是小数
的情况。若数组元素为浮点类型,第二个例子就无法正常使用。
Challenge #2: 判断一个日期是周末还是工作日
实现一个函数,日期对象 new Date()
作为输入,根据不同日期返回当天是工作日
还是周末
。
if实现
const weekendOrWeekday = inputDate => { const day = inputDate.getDay(); if (day === 0 || day === 6) { return 'weekend'; } return 'weekday'; // Or, for ternary fans: // return (day === 0 || day === 6) ? 'weekend' : 'weekday'; }; console.log(weekendOrWeekday(new Date()));
非if实现
const weekendOrWeekday = (inputDate) => { const day = inputDate.getDay(); return weekendOrWeekday.labels[day] || weekendOrWeekday.labels['default']; }; weekendOrWeekday.labels = { 0: 'weekend', 6: 'weekend', default: 'weekday' }; console.log(weekendOrWeekday(new Date()));
有没有注意到,if语句
中的数字代表哪天是周末,判定条件分布的较为零散,我们需要做的是将数字和周末或工作日
类型对应起来,如例子2,可以使用一个对象或者map来存储对应关系。
上述两个例子对比,可以明显看出非if代码
实现具有更好的可读性和扩展性
Challenge #3: The doubler function (here be dragons),翻译不出来~尬~
实现一个doubler函数,根据输入不同,做如下处理:
若输入是
number
类型, 做翻倍处理(5 => 10, -10 => -20)若输入是
string
类型,重复每个字符('hello' => 'hheelloo')若输入是
function
类型,调用执行两次函数若输入是
array
类型,对数组的每个元素做doubler
处理若输入是
object
类型,对对象的每个属性做doubler
处理
switch
实现
const doubler = (input) => { switch (typeof input) { case 'number': return input + input; case 'string': return input .split('') .map(letter => letter + letter) .join(''); case 'object': Object.keys(input) .map(key => (input[key] = doubler(input[key]))); return input; case 'function': input(); input(); } }; console.log(doubler(-10)); console.log(doubler('hey')); console.log(doubler([5, 'hello'])); console.log(doubler({ a: 5, b: 'hello' })); console.log( doubler(function() { console.log('call-me'); }), );
非switch
实现
const doubler = (input) => { return doubler.operationsByType[typeof input](input); }; doubler.operationsByType = { number: (input) => input + input, string: (input) => input .split('') .map((letter) => letter + letter) .join(''), function: (input) => { input(); input(); }, object: (input) => { Object.keys(input) .map((key) => (input[key] = doubler(input[key]))); return input; }, }; console.log(doubler(-10)); console.log(doubler('hey')); console.log(doubler([5, 'hello'])); console.log(doubler({ a: 5, b: 'hello' })); console.log( doubler(function() { console.log('call-me'); }), );
和Challenge #2类似,将条件值聚合在一起做统一处理。
总结
当if-else
的判断条件较多时,将条件做集中处理(用object存储其对应关系--条件做key,处理做value)。好处是增删某个条件变得容易,代码更加可读,提倡使用key-value
对应来取代一部分的if-else
날짜 개체 new Date()
를 입력으로 사용하고 해당 날짜가 인지 여부를 반환하는 함수를 구현하세요. 다른 날짜에 따른 근무일
>아직 주말
입니다.
if 구현rrreeeNon-if 구현
rrreee if 문
의 숫자가 어느 날이 주말인지 나타내고, 판단 조건의 분포가 상대적으로 분산되어 있다는 사실을 알고 계셨나요? 우리가 해야 할 일은 숫자를 결합하는 것입니다. 주말 또는 주중
유형에 대응하려면 예제 2에서와 같이 객체나 지도를 사용하여 해당 관계를 저장할 수 있습니다. 위의 두 예를 비교하면 non-if 코드
구현이 더 나은 가독성과 확장성을 갖고 있음을 확실히 알 수 있습니다.
도전 #3: doubler 함수(여기서는 용이 있습니다), 번역은 다음과 같습니다. 나오지 마세요~어색하지~더블러 기능을 구현하고 다양한 입력에 따라 다음 처리를 수행합니다.
- 🎜입력이
number 유형인 경우
, 이중 처리(5 => 10, -10 => -20)🎜 - 🎜입력이
string
유형인 경우 각 문자를 반복합니다. ('hello' => ; 'hheelloo')🎜 - 🎜입력이
함수
유형인 경우 함수를 두 번 호출하고 실행하세요🎜 - 🎜 입력이
배열
유형인 경우 배열의 각 요소에 대해더블러
처리를 수행합니다🎜 - 🎜입력이
객체 유형, 개체 코드의 각 속성에 대해 <code>doubler
처리 수행>doubler 핸들 🎜
switch
구현 🎜rrreee 🎜비스위치
구현 🎜rrreee🎜은 챌린지 #2와 유사하며, 통합 처리를 위해 조건 값이 함께 집계됩니다. 🎜🎜요약🎜🎜if-else
에 대한 판단 조건이 여러 개인 경우 조건을 중앙에서 처리합니다. (객체를 사용하여 해당 관계를 저장합니다. 조건은 키로 사용되며 처리는 다음과 같이 사용됩니다. 값). 장점은 특정 조건을 추가하거나 삭제하기가 더 쉬워지고 코드의 가독성이 높아진다는 것입니다. if-else키-값
대응을 사용하는 것이 좋습니다. /code> 조건부 판단. 🎜🎜관련 권장 사항: 🎜🎜🎜🎜if 문의 현재 상황, 전망 및 기회에 대해 이야기해 보세요.🎜🎜🎜🎜PHP를 기반으로 하는 elseif 문의 코드 예제 요약🎜🎜🎜🎜SQL의 if 문에 대한 자세한 설명🎜🎜위 내용은 If 문이 없는 프로그래밍 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











정규식을 사용하여 PHP 배열에서 중복 값을 제거하는 방법: 정규식 /(.*)(.+)/i를 사용하여 중복 항목을 일치시키고 바꿉니다. 배열 요소를 반복하고 preg_match를 사용하여 일치하는지 확인합니다. 일치하면 값을 건너뛰고, 그렇지 않으면 중복 값이 없는 새 배열에 추가합니다.

1. 프로그래밍은 웹사이트, 모바일 애플리케이션, 게임, 데이터 분석 도구 등 다양한 소프트웨어와 애플리케이션을 개발하는 데 사용될 수 있습니다. 응용 분야는 매우 광범위하여 과학 연구, 의료, 금융, 교육, 엔터테인먼트 등 거의 모든 산업을 포괄합니다. 2. 프로그래밍을 배우면 문제 해결 능력과 논리적 사고 능력을 향상하는 데 도움이 됩니다. 프로그래밍하는 동안 우리는 문제를 분석 및 이해하고, 해결책을 찾고, 이를 코드로 변환해야 합니다. 이러한 사고방식은 우리의 분석적이고 추상적인 능력을 키우고 실제적인 문제를 해결하는 능력을 향상시킬 수 있습니다.

Golang을 사용하여 브라우저 기반 애플리케이션 구축 Golang은 JavaScript와 결합하여 동적 프런트 엔드 경험을 구축합니다. Golang 설치: https://golang.org/doc/install을 방문하세요. Golang 프로젝트 설정: main.go라는 파일을 만듭니다. GorillaWebToolkit 사용: GorillaWebToolkit 코드를 추가하여 HTTP 요청을 처리합니다. HTML 템플릿 생성: 기본 템플릿인 템플릿 하위 디렉터리에 index.html을 생성합니다.

C++ 프로그래밍 퍼즐은 피보나치 수열, 계승, 해밍 거리, 배열의 최대값과 최소값 등과 같은 알고리즘 및 데이터 구조 개념을 다룹니다. 이러한 퍼즐을 풀면 C++ 지식을 통합하고 알고리즘 이해 및 프로그래밍 기술을 향상시킬 수 있습니다.

Python은 초보자에게 문제 해결 능력을 부여합니다. 사용자 친화적인 구문, 광범위한 라이브러리 및 변수, 조건문 및 루프 사용 효율적인 코드 개발과 같은 기능을 제공합니다. 데이터 관리에서 프로그램 흐름 제어 및 반복 작업 수행에 이르기까지 Python은 제공합니다.

Python은 배우기 쉽고 강력한 기능을 통해 초보자에게 이상적인 프로그래밍 입문 언어입니다. 기본 사항은 다음과 같습니다. 변수: 데이터(숫자, 문자열, 목록 등)를 저장하는 데 사용됩니다. 데이터 유형: 변수의 데이터 유형(정수, 부동 소수점 등)을 정의합니다. 연산자: 수학 연산 및 비교에 사용됩니다. 제어 흐름: 코드 실행(조건문, 루프) 흐름을 제어합니다.

GoGet을 통해 Go 모듈을 빠르고 쉽게 얻을 수 있습니다. 단계는 다음과 같습니다. 터미널에서 실행: goget[module-path], 여기서 module-path는 모듈 경로입니다. GoGet은 모듈과 해당 종속성을 자동으로 다운로드합니다. 설치 위치는 GOPATH 환경 변수에 의해 지정됩니다.

Go의 오류 처리에는 래핑 오류와 래핑 해제 오류가 포함됩니다. 오류 래핑을 사용하면 한 오류 유형을 다른 오류 유형으로 래핑하여 오류에 대한 더 풍부한 컨텍스트를 제공할 수 있습니다. 쉬운 디버깅을 위해 오류를 확장하고 중첩된 오류 체인을 탐색하여 가장 낮은 수준의 오류를 찾습니다. 이 두 가지 기술을 결합하면 오류 조건을 효과적으로 처리할 수 있어 더 풍부한 오류 컨텍스트와 더 나은 디버깅 기능을 제공할 수 있습니다.
