ใช้ตัวดำเนินการตามเงื่อนไข AND หรือ OR ในคำสั่ง IF หรือไม่


30

นี่อาจเป็นคำถามง่าย ๆ อย่างเหลือเชื่อ แต่ฉันไม่พบคำตอบใด ๆ (ฉันต้องขาดแหล่งข้อมูลที่ถูกต้องและฉันไม่รู้ว่าจะค้นหาด้วยความช่วยเหลือของกลุ่มใด)

ฉันมีเงื่อนไขและฉันต้องการให้รวม 'และ' เช่น

if (condition1 .AND. condition2)
   "do what I want you to do
endif

แต่ฉันไม่พบไวยากรณ์ สิ่งเดียวกันสำหรับ 'OR'


8
เฮ้.AND.และ.OR.เป็นไวยากรณ์ของ Fortran ฉันไม่เห็นว่าใช้นอกรหัส Fortran ในระยะเวลานาน :) Vim ใช้ไวยากรณ์ C-like แทน&&สำหรับ AND และ||สำหรับ OR ดู:h expression-syntaxเพิ่มเติม
lcd047

1
ฉันรู้สึกเห็นอกเห็นใจในความคิดเห็นของคุณด้วย * ฉันไม่เห็นว่าใช้นอกรหัส Fortran ในระยะเวลานาน :) *: ขอบคุณสำหรับสิ่งนั้น. สำหรับความคิดเห็นของคุณถ้าคุณโพสต์มันเป็นคำตอบฉันยินดีที่จะยอมรับมัน!
Feffe

2
ฉันพบว่าชื่อคำถามสับสน "และ" และ "และ" หรือ "หรือ" ซึ่งอยู่ติดกันเช่นนั้น (jk)
Ben Millwood

2
ฉันสามารถเขียน "และ" และ / หรือ "หรือ" แต่ฉันไม่กล้า!
Feffe

คำตอบ:


30

ในฐานะที่เป็น @ lcd047 กล่าวว่าในความคิดเห็นของเขาใช้ vimscript C-เช่นผู้ประกอบการและ&&||

คุณสามารถดูคำอธิบายการใช้งานของพวกเขา:h expr2ได้ที่ ประเด็นสำคัญบางประการที่กล่าวถึงโดยเอกสารมีดังต่อไปนี้

คุณจะพบว่าตัวดำเนินการสามารถต่อกันและ&&มีความสำคัญมากกว่า||ดังนั้น

&nu || &list && &shell == "csh"

มีค่าเท่ากับ

&nu || (&list && &shell == "csh")

เมื่อรู้ผลลัพธ์แล้วนิพจน์ "short-circuits" นั่นคืออาร์กิวเมนต์เพิ่มเติมจะไม่ถูกประเมิน นี่คือสิ่งที่เกิดขึ้นใน C.

ถ้าคุณใช้:

if a || b

การแสดงออกจะถูกต้องแม้bจะไม่ได้กำหนดไว้


2
โปรดทราบว่าฉันได้ทำคำตอบนี้เพราะ @ lcd047 ไม่ได้เขียนไว้และฉันคิดว่าบันทึกเกี่ยวกับหมอจะน่าสนใจ แต่ถ้า lcd047 สร้างคำตอบฉันยินดีที่จะลบอันนี้เพื่อให้เขาได้รับเครดิตอย่างเป็นธรรม
statox

1
ฉันสงสัยมัน. บางครั้งที่ผ่านมา lcd047 บอกฉันว่าพวกเขาจะไม่โพสต์คำตอบ
muru

@muru: ฉันยังจำได้ว่าเห็นที่ไหนสักแห่ง แต่ฉันไม่แน่ใจ 100% ว่าเป็นเขาและไม่ใช่ผู้ใช้รายอื่น
statox
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.