isweal
V2EX  ›  Swift

请问一个 Swift 的语法问题。

  •  
  •   isweal · Jul 21, 2017 · 4427 views
    This topic created in 3222 days ago, the information mentioned may be changed or developed.

    在 OC 中可以这样写

    NSTimeInterval timeInterval = [self timeIntervalSinceNow];
    timeInterval = -timeInterval;
    timeInterval = timeInterval - 8 * 60 * 60;
    long temp = 0;
    NSString *result;
    if (timeInterval < 60) {
    	result = [NSString stringWithFormat:@"just"];
    } else if ((temp = (long) (timeInterval / 60)) < 60) {
    	result = [NSString stringWithFormat:@"%ld m", temp];
    } else if ((temp = temp / 60) < 24) {
    	result = [NSString stringWithFormat:@"%ld h", temp];
    }
    

    就是在 if 的时候可以对 temp 同时进行赋值与比较,那么 swift3 可以这样写吗,试了一会总是报红。

    10 replies    2017-07-21 14:31:06 +08:00
    JohnSmith
        1
    JohnSmith  
       Jul 21, 2017 via Android
    If let ?
    isweal
        2
    isweal  
    OP
       Jul 21, 2017
    @JohnSmith if let 后面只能接 optional type 啊。
    yzyzsun
        3
    yzyzsun  
       Jul 21, 2017 via iPad
    现在 Swift 的赋值语句没有返回值,不仅是这个例子,连续赋值( a = b = c )也是不行的
    hekunhotmail
        4
    hekunhotmail  
       Jul 21, 2017
    所以 swift 好傻逼啊,写点简洁的代码都不行,oc 想要写简洁点没啥障碍
    isweal
        5
    isweal  
    OP
       Jul 21, 2017 via iPhone
    @hekunhotmail swift 也有 swift 的好啊
    hekunhotmail
        6
    hekunhotmail  
       Jul 21, 2017
    @isweal 我只是说它这方面确实挺 low 得,好的地方都还不错
    acumen
        7
    acumen  
       Jul 21, 2017
    逗号表达式? if let temp = a, temp < 60
    isweal
        8
    isweal  
    OP
       Jul 21, 2017
    @acumen 不行的,你这里 a 必须是 optional
    isweal
        9
    isweal  
    OP
       Jul 21, 2017
    最后我用了一堆嵌套 if else 把之前写的 OC 代码翻译过去了。
    acumen
        10
    acumen  
       Jul 21, 2017
    @isweal 是的,如果非要这么写的话,a 用 optional 包一层。 看上去比较奇怪
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3035 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 09:37 · PVG 17:37 · LAX 02:37 · JFK 05:37
    ♥ Do have faith in what you're doing.