최초의 CLI 구축

소개하다.


약 두 달 전에, 나는 Flatiron의 소프트웨어 공학 프로젝트를 시작했다.이 프로젝트에서 나는 기본적으로 인코딩 기술과 지식이 없다.지난 두 달 동안 Ruby를 배워 왔고 이제 제 첫 CLI를 구축했습니다.My CLI는 amakeup API에서 추출되므로 사용자가 특정 요구 사항에 맞는 특정 레이블을 탐색할 수 있습니다.레이블을 선택하면 해당 레이블에 대한 제품 유형 목록이 사용자에게 제공됩니다.제품 유형을 선택하면 브랜드, 설명, 사이트 링크를 포함한 제품의 상세한 목록을 보여 줍니다.
이것은 나의 첫 번째 프로젝트이기 때문에github, 환경과 전체 인코딩 방면에 약간의 학습 곡선이 있다.CLI를 구축할 때 유용한 것들을 많이 만났는데 여러분과 공유하고 싶습니다.

시스템(지우기)




터미널 응용 프로그램에 있어서 가장 좋은 일은 코드에서 이루어지는 것이다system("clear").나는 사용자의 입력을 받은 후 바로 이 코드를 놓았기 때문에 사용자가 선택한 정보를 표시하기 전에 터미널 창이 지워진다.사용자가 입력을 터미널에 입력한 후에 터미널을 깨끗하고 읽기 쉽게 보일 수 있다.이렇게 작은 것이 나의 CLI에 커다란 영향을 미쳤다.

각 교체기, 매핑/수집, 선택


자주 사용하는 교체기와 그 반환과 실행을 배우는 것은 교체 집합에 매우 유용하다.CLI를 구축하는 동안 저는 .collect.select를 사용하여 API에서 정보를 수집했습니다.

각각.each 블록 내수 그룹의 모든 요소를 처리하는 데 사용됩니다.
array = [1, 2, 3, 4, 5]
array.each {|x| puts x}
output => 
1
2
3
4
5
return =>
[1, 2, 3, 4, 5]
주의해야 할 점은 .each 호출된 원시 그룹의 대상을 되돌려주는 것이다.방법 결과를 포함하는 그룹을 되돌려보내려면 빈 그룹을 가진 새 변수를 만들고 그 결과를 이 그룹으로 보내야 합니다.
array = [1, 2, 3, 4, 5]
new_arr = []
array.each {|x| new_arr << x*2}
new_arr
output => 

return =>
[2, 4, 6, 8, 10]
프로젝트에서 자주 사용하는 .each 교체기는 .each_with_index입니다.이렇게 하면 CLI에서 목록 메뉴와 제품 목록을 생성할 수 있도록 내 정보 배열을 교체할 수 있습니다.다음 예시 .each_with_index 는 그룹의 모든 요소의 숫자 목록을 인쇄하기 위해 그룹과 함께 사용합니다.x는 수조의 모든 요소를 나타내고 i는 모든 요소에 대응하는 색인을 나타낸다.번호 목록을 인쇄하려면 0부터 시작하는 색인을 설명하기 위해 1을 색인에 추가해야 합니다.
array = ["a", "b", "c", "d", "e"]
array.each_with_index {|x, i| puts "#{i + 1}. #{x}"}
output =>
1. a
2. b
3. c
4. d
5. e
return =>
["a", "b", "c", "d", "e"]

지도/수집.collect 또는 .map 방법은 우리가 .each와 같은 그룹을 교체할 수 있도록 허락하지만 .collect는 새로운 그룹과 교체기의 결과를 되돌려줍니다..collect.map는 동일하여 교환하여 사용할 수 있습니다.내 CLI에서, 이 교체기는 매우 유용해서, 나의 집합 수조에서 교체를 진행하여, 나의 API 해시에서 더욱 깊은 정보를 포함하는 새로운 수조를 얻을 수 있다.
array = [1, 2, 3, 4, 5]
new_arr = array.collect {|x| x*2}
new_arr
output => 

return =>
[2, 4, 6, 8, 10]

선택 항목
이거.select 방법은 수조에서 교체되고 블록에서 지정한 문장이true인 모든 요소를 가져옵니다.이것은 이 블록을 만족시키는 모든 요소를 포함하는 새 그룹을 되돌려줍니다.
array = [1, 2, 3, 4, 5]
new_arr = array.select {|x| x.even?}
new_arr
output => 

return =>
[2, 4]

찾아내다.find 방법은 .select 방법과 유사하지만 블록을 만족시키는 첫 번째 요소를 되돌려주고 교체를 멈춘다.그것은 그룹을 되돌려주지 않을 뿐만 아니라, 이 블록을 만족시키는 모든 요소를 되돌려주지 않을 것이다.다음 예시에서 되돌아오는 값은 2이고, 수조에 있지 않으며, 4를 되돌아오지 않는다.
array = [1, 2, 3, 4, 5]
new_arr = array.select {|x| x.even?}
new_arr
output => 

return =>
2

포장보석


내 API에 대해 나는 항목마다 설명을 추출한다. 이것은 긴 문자열이다.내가 겪은 문제는 문자열이 터미널 가장자리에 닿았을 때 단어 중간에 끊어진 것을 설명하는 것이다.word_wrap gem는 이 문제를 해결하는 보석이다.gem의 기능은 gem의 이름입니다. 텍스트를 터미널에 설정한 너비로 포장합니다.

마지막으로...


CLI를 완료한 후에 다른 CLI 방법을 사용할 수 있다는 것을 깨달았습니다.사람들이 내 코드를 보고 CLI의 일부 부분을 강제로 사용했다는 것을 깨달았지만, 나는 아직 초보자이다.나중에 코드를 개선할 수도 있지만 현재 CLI는 완벽한 기능을 갖춘 최종 제품이며 제 첫 번째 CLI로 완성된 것 같습니다.

좋은 웹페이지 즐겨찾기