簡體   English   中英

Switch語句不適用於某些變量

[英]Switch statement doesn't work with some variables

我想使Angular2 Pipe根據傳遞的變量返回不同的值。 變量device.display可以具有不同的類型(對象或字符串),並且僅接受兩個值null"dataTime"

組成部分:

<div class="col col-2">{{values[variable.id] | display: device.display}}</div>

管:

Pipe
import { Pipe } from '@angular/core';
@Pipe({
    name: 'display'
})
export class DisplayPipe {
    transform(value: any, display: string): string {
        display = String(display);
        switch (display) {
            case 'dateTime': {
                value = value * 60;
            }
            case 'null': {
                value = value;
           }
        default: value = 'abc';
        }
    return value;
    }
}

我確定在將變量解析為String之后,它等於"null""dateTime" 我用console.log檢查了它。

問題是switch語句始終返回默認值: "abc"

語法錯誤。 在每種情況下都不需要括號,並且您忘了break; 聲明。

以下是有關如何構建開關盒的示例:

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;
    case 2:
        day = "Tuesday";
        break;
    case 3:
        day = "Wednesday";
        break;
    case 4:
        day = "Thursday";
        break;
    case 5:
        day = "Friday";
        break;
    case 6:
        day = "Saturday";
}

那不是切換的正確方法:

switch (display) {
            case 'dateTime':
                value = value * 60;
                break;
            case 'null':
                value = value;
                break;
            default: 
               value = 'abc';
        }

如果您不中斷所有情況,則switch將執行所有情況,然后在所有情況下如何設置相同的變量,該值為最后一個情況默認值:abc。

如果您錯過了Java中的break語句, 則會發生穿透情況,因此執行默認語句,並且值始終為“ abc”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM