快速范围检查>开关中

问题描述

以下代码无法在Swift中编译。替代表达的最佳方法是什么?

   //f1 & f2 are float vars between 0 & 1

   switch value {
            case 0...f1:
                break
            case >f1..f1+f2:
                break
            case >f1+f2..<=1:
                break
            default:
                break
            }

解决方法

不可能在Swift中创建一个在低端打开的范围。

这将实现您的预​​期目标:

upstream mysite {
    # Path to Unicorn SOCK file,as defined previously
    server unix:/home/rails/mysite/shared/sockets/unicorn.sock fail_timeout=0;
}

server {

        server_name mysite.com;

        root /home/rails/mysite;
        index index.htm index.html;

        location / {
          try_files $uri/index.html $uri.html $uri @mysite;
        }

        location @mysite {
          proxy_pass http://mysite;
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Forwarded-Ssl on; # Optional
          proxy_set_header X-Forwarded-Port $server_port;
          proxy_set_header X-Forwarded-Host $host;
          proxy_redirect off;
        }

        error_page 500 502 503 504 /500.html;
        client_max_body_size 4G;
        keepalive_timeout 10;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = mysite) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;

        server_name mysite.es;
    return 404; # managed by Certbot
}


  [1]: https://stackoverflow.com/questions/63522807/nginx-does-not-pass-some-files-to-unicorn

由于switch value { case 0...f1: print("one") case f1...(f1 + f2): print("two") case (f1 + f2)...1: print("three") default: print("four") } 与找到的第一个switch相匹配,因此您不必担心在低端不具有包容性。 case会与f1情况相匹配,因此"one"情况也包括它都没关系。

如果您想将第一种情况排除在"two"之外,可以这样写:

0

case let x where 0...f1 ~= x && x != 0: