목차
과제 #1: 숫자 배열에 홀수가 몇 개 있는지 세어보세요.
Challenge #2: 判断一个日期是周末还是工作日
Challenge #3: The doubler function (here be dragons),翻译不出来~尬~
总结
백엔드 개발 PHP 튜토리얼 If 문이 없는 프로그래밍 예제

If 문이 없는 프로그래밍 예제

Feb 01, 2018 pm 02:27 PM
프로그램 작성 성명

이제부터 비즈니스 구현 시 if 문을 사용하지 마세요.

if를 사용하지 않으면 어떤 이점이 있는지 궁금하시죠? 글쎄요~, 어쩌면 뚜렷한 이점이 없을 수도 있습니다. 문제를 해결하기 위해 사고 방식을 바꾸는 것뿐입니다. if-else에는 아무런 문제가 없지만 경우에 따라 if-else가 너무 많으면 코드 읽기가 어려워질 수 있습니다. 다음은 신비감을 느끼는 데 도움이 되는 몇 가지 예입니다.

코딩 팁: If 문 없이 코딩해 보세요

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函数,根据输入不同,做如下处理:

  1. 若输入是number类型, 做翻倍处理(5 => 10, -10 => -20)

  2. 若输入是string类型,重复每个字符('hello' => 'hheelloo')

  3. 若输入是function类型,调用执行两次函数

  4. 若输入是array类型,对数组的每个元素做doubler处理

  5. 若输入是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

도전 #2: 날짜가 주말인지 근무일인지 확인


날짜 개체 new Date()를 입력으로 사용하고 해당 날짜가 인지 여부를 반환하는 함수를 구현하세요. 다른 날짜에 따른 근무일 >아직 주말입니다.

if 구현rrreeeNon-if 구현

rrreee

if 문의 숫자가 어느 날이 주말인지 나타내고, 판단 조건의 분포가 상대적으로 분산되어 있다는 사실을 알고 계셨나요? 우리가 해야 할 일은 숫자를 결합하는 것입니다. 주말 또는 주중 유형에 대응하려면 예제 2에서와 같이 객체나 지도를 사용하여 해당 관계를 저장할 수 있습니다. 위의 두 예를 비교하면 non-if 코드 구현이 더 나은 가독성과 확장성을 갖고 있음을 확실히 알 수 있습니다.

도전 #3: doubler 함수(여기서는 용이 있습니다), 번역은 다음과 같습니다. 나오지 마세요~어색하지~더블러 기능을 구현하고 다양한 입력에 따라 다음 처리를 수행합니다.

  1. 🎜입력이 number 유형인 경우 , 이중 처리(5 => 10, -10 => -20)🎜
  2. 🎜입력이 string 유형인 경우 각 문자를 반복합니다. ('hello' => ; 'hheelloo')🎜
  3. 🎜입력이 함수 유형인 경우 함수를 두 번 호출하고 실행하세요🎜
  4. 🎜 입력이 배열 유형인 경우 배열의 각 요소에 대해 더블러 처리를 수행합니다🎜
  5. 🎜입력이 객체 유형, 개체 코드의 각 속성에 대해 <code>doubler 처리 수행>doubler 핸들 🎜
🎜switch 구현 🎜rrreee 🎜비스위치 구현 🎜rrreee🎜은 챌린지 #2와 유사하며, 통합 처리를 위해 조건 값이 함께 집계됩니다. 🎜🎜요약🎜🎜if-else에 대한 판단 조건이 여러 개인 경우 조건을 중앙에서 처리합니다. (객체를 사용하여 해당 관계를 저장합니다. 조건은 키로 사용되며 처리는 다음과 같이 사용됩니다. 값). 장점은 특정 조건을 추가하거나 삭제하기가 더 쉬워지고 코드의 가독성이 높아진다는 것입니다. if-else키-값 대응을 사용하는 것이 좋습니다. /code> 조건부 판단. 🎜🎜관련 권장 사항: 🎜🎜🎜🎜if 문의 현재 상황, 전망 및 기회에 대해 이야기해 보세요.🎜🎜🎜🎜PHP를 기반으로 하는 elseif 문의 코드 예제 요약🎜🎜🎜🎜SQL의 if 문에 대한 자세한 설명🎜🎜

위 내용은 If 문이 없는 프로그래밍 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

정규 표현식을 사용하여 PHP 배열에서 중복 값 제거 정규 표현식을 사용하여 PHP 배열에서 중복 값 제거 Apr 26, 2024 pm 04:33 PM

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

프로그래밍이란 무엇을 위한 것이며 프로그래밍을 배워서 무슨 소용이 있습니까? 프로그래밍이란 무엇을 위한 것이며 프로그래밍을 배워서 무슨 소용이 있습니까? Apr 28, 2024 pm 01:34 PM

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

Golang을 사용하여 브라우저 기반 애플리케이션 구축 Golang을 사용하여 브라우저 기반 애플리케이션 구축 Apr 08, 2024 am 09:24 AM

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

C++ 프로그래밍 퍼즐 모음: 사고를 자극하고 프로그래밍 기술을 향상시킵니다. C++ 프로그래밍 퍼즐 모음: 사고를 자극하고 프로그래밍 기술을 향상시킵니다. Jun 01, 2024 pm 10:26 PM

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

Python을 사용한 문제 해결: 초보 코더로서 강력한 솔루션 잠금 해제 Python을 사용한 문제 해결: 초보 코더로서 강력한 솔루션 잠금 해제 Oct 11, 2024 pm 08:58 PM

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

코딩의 핵심: 초보자를 위한 Python의 힘 활용 코딩의 핵심: 초보자를 위한 Python의 힘 활용 Oct 11, 2024 pm 12:17 PM

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

Go Get으로 Go 모듈을 빠르고 쉽게 받으세요. Go Get으로 Go 모듈을 빠르고 쉽게 받으세요. Apr 07, 2024 pm 09:48 PM

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

오류 처리를 위해 golang의 오류 래핑 및 해제 메커니즘을 사용하세요. 오류 처리를 위해 golang의 오류 래핑 및 해제 메커니즘을 사용하세요. Apr 25, 2024 am 08:15 AM

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

See all articles