作者 主題: [perl]請問有沒有可以跳出if判斷式的指令~已解決  (閱讀 2717 次)

0 會員 與 1 訪客 正在閱讀本文。

logichom

  • 懷疑的國中生
  • **
  • 文章數: 87
    • 檢視個人資料
跳出for while迴圈的指令是last
但是想跳出if 判斷式有這種指令嗎?
想說用exit
但是exit的結果就是跳出程式了...

會想這麼做就是因為程式都是由很多判斷式組成
假設第一個條件成立進入判斷式
但是判斷式內會去做第二個條件的過濾
如果符合就繼續執行下去
不符合就想跳出此判斷式
目前就算不符合第二個條件還是會繼續執行
感覺程式的邏輯會很怪
以上 麻煩大大了
« 上次編輯: 2014-02-20 12:37 由 logichom »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #1 於: 2014-02-20 10:32 »
跳出for while迴圈的指令是last
但是想跳出if 判斷式有這種指令嗎?
想說用exit
但是exit的結果就是跳出程式了...

會想這麼做就是因為程式都是由很多判斷式組成
假設第一個條件成立進入判斷式
但是判斷式內會去做第二個條件的過濾
如果符合就繼續執行下去
不符合就想跳出此判斷式
目前就算不符合第二個條件還是會繼續執行
感覺程式的邏輯會很怪
以上 麻煩大大了

符合才執行的碼都寫在 {} 呀,怎麼會怪
要不要把程式碼貼出來看看

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #2 於: 2014-02-20 10:39 »
寫成 function 用 return 解決?

logichom

  • 懷疑的國中生
  • **
  • 文章數: 87
    • 檢視個人資料
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #3 於: 2014-02-20 10:52 »
寫成 function 用 return 解決?
這可能是唯一的辦法
不過要重寫程式...想到就覺得好累 :-\

logichom

  • 懷疑的國中生
  • **
  • 文章數: 87
    • 檢視個人資料
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #4 於: 2014-02-20 10:58 »
符合才執行的碼都寫在 {} 呀,怎麼會怪
要不要把程式碼貼出來看看

有稍微修改程式碼
大致如下:
引用
if($job eq "register")
{
$session->add($account) or print("Add account object failed: $account\n"); #想要改成如果加入帳號失敗就跳出if敘述                                 
$job="login";   #如果加入帳號成功繼續做登入


jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #5 於: 2014-02-20 11:12 »
if        條件1 成立
          開始執行命令A
else if 條件2 成立
          開始執行命令B
else if .
          .
          .
end-if end-if end-if.
(這是 cobol 的語法應用,但我想萬教不離其宗) XDDD

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #6 於: 2014-02-20 11:20 »
有稍微修改程式碼
大致如下:
引用
if($job eq "register")
{
$session->add($account) or print("Add account object failed: $account\n"); #想要改成如果加入帳號失敗就跳出if敘述                                 
$job="login";   #如果加入帳號成功繼續做登入


就如 jou 老大說的,可以改用 if else 語法
如果堅持要用 one line 語法,也可以改用 ? :
像這樣...
代碼: [選擇]
$addTrue ? $job = "login" : print "failed\n";

logichom

  • 懷疑的國中生
  • **
  • 文章數: 87
    • 檢視個人資料
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #7 於: 2014-02-20 11:43 »
問題好像似乎解決了
我是用這種方法

引用
if($job eq "register")
{
$session->add($account) or print("Add account object failed: $account\n") and $error="false"; #想要改成如果加入帳號失敗就跳出if敘述 
if($error ne "false") #如果加入帳號成功繼續做登入
{                               
$job="login";   
}


Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #8 於: 2014-02-20 12:24 »
問題好像似乎解決了
我是用這種方法

引用
if($job eq "register")
{
$session->add($account) or print("Add account object failed: $account\n") and $error="false"; #想要改成如果加入帳號失敗就跳出if敘述 
if($error ne "false") #如果加入帳號成功繼續做登入
{                               
$job="login";   
}


如果樓主為了堅持要保留原來語法
而多出沒啥意義的變數與判斷式
當然也是可以啦(至少目的達到了)
呵~ 加油~^_^

logichom

  • 懷疑的國中生
  • **
  • 文章數: 87
    • 檢視個人資料
Re: [perl]請問有沒有可以跳出if判斷式的指令
« 回覆 #9 於: 2014-02-20 12:36 »
如果樓主為了堅持要保留原來語法
而多出沒啥意義的變數與判斷式
當然也是可以啦(至少目的達到了)
呵~ 加油~^_^

謝謝!雖然沒有採用各位前輩的建議,不過還是要感謝各位熱心的前輩
畢竟程式是死的 語法卻是活的
programmer如果腦袋轉不過來只好上網尋求了...

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
看了樓主最後評語
突然有啼笑皆非的感覺 呵
就當做是灌水閒聊吧  :D