吸乳房会不会得乳腺结节但由于莫得类型上的敛迹
发布日期:2022-09-23 06:01    点击次数:139
黑人又大又长做得好爽吸乳房会不会得乳腺结节

本文转载自微信公众号「网管叨bi叨」,作家网管。转载本文请联系网管叨bi叨公众号。

在编程范围里,胪列是用来暗示只包含有限数目的固定值的类型,在建树中一般用于象征失实码大概景况机。拿一个实体对象的景况机来说,它正常与这个对象在数据库里对应记载的象征景况的字段值相对应。

在刚开动学编程的技能,你一定写过,至有数过径直使用魔术数字进行判断的代码。啥叫魔术数字呢,举个例子,要置顶一个著作的技能先判断著作是不是已发布景况。

if (article.state == 2) {    // state 2 代表著作已发布 } 

假如我们的代码里莫得详确,大概等我们项盘算推算代码里充斥着这些魔术数字的判断的技能,你是不是会很头疼?

其后我就学会了把这些景况值界说成常量,况且也搞一个判断对象景况的按次单独封装这段逻辑。

public class ArticleState {          public static final int Draft = 1; //草稿          public static final int Published = 2; //发布          public static final int Deleted = 3; // 已删除 }  public  Boolean checkArticleState(int state) {          ...      } 

这种用法,详情是比在按次里径直用魔术数字进行判断要强好多啦,至少看着不会很头疼,不会想骂**。

不事其后被其时带我的老老迈说这种也有过错,上头这个 checkArticleState 按次用来查验著作景况, 酵素本意是让调用者传入 ArticleState 的三个静态常量之一,但由于莫得类型上的敛迹,因此传入大肆一个 int 值在语法上亦然允许的,编译器也不会漠视任何劝诫,换成用胪列更顺应一些。

em~! 我不牢记大学教 Java 的阿谁学期敦厚讲过这玩意啊,莫非又是一个上课玩手机错过的学问点?......

是以使用胪列后我们的Java代码变成了:

// 使用enum而非class声明 public enum ArticleState {       //要在enum里创建扫数的胪列对象     Draft(1, "草稿");     Published(2, "已发布");     Deleted(3,色中文字幕精品国产 "已删除")            // 自界说属性     private int code;      private String text;        // 构造按次必须是private的     ArticleState(int code, String text) {         this.code = id;         this.text = name;     } }  public  Boolean checkArticleState(ArticleState state) {          ...      } 

这样就能靠形参的胪列类型帮我们过滤掉积恶的景况值。把整型值四肢参数传给 checkArticleState 按次时因为类型不匹配编译不外去,在写代码时编译器也能飞速请示出来。

要是没灵验过 Java 的小伙伴也无谓纠结,主要的语法点我用详确标注出来了。

其后这两年主要在用Go做名堂,我发现相似的问题 Go 里也存在,然而 Go 并莫得提供胪列类型,那怎样做到进办事态值的正确物化呢?要是还是用 int 型的常量详情不行。比如:

const (     Draft int = 1     Published = 2     Deleted   = 3 )  const (     Summer int = 1     Autumn     = 2     Winter     = 3     Spring     = 4 )  func main() {     // 输出 true, 不会有任何编译失实     fmt.Println(Autumn == Draft) } 

比如上头界说了两组 int 类型的常量,一类代表著作景况,一类代表季节的四季。这种神气拿著作景况与季节进行比拟不会有任何编译上的失实。

谜底在 Go 内置库大概一些我们都廓清的开源库的代码里就能找到。比如望望 google.golang.org/grpc/codes 里的gRPC 的失实码是怎样界说的,我们飞速就能显然该怎样正确的杀青胪列。

底下未几卖关子径直上谜底了,不想去源码里看的,就看我这里写的也行,都是这样做的。

我们不错用 int 四肢基础类型创建一个别称类型,Go 里边是撑持这个的

type Season int  const (  Summer Season = 1  Autumn        = 2  Winter        = 3  Spring        = 4 ) 

天然界说辘集的常量值的技能 Go 里边时常使用 iota,是以上头的界说还能进一步简化。

type Season int  const (  Summer Season = iota + 1  Autumn  Winter  Spring )  type ArticleState int  const (   Draft ArticleState = iota + 1   Published   Deleted   )  func checkArticleState(ArticleState state) {  // ...  }   func main() {    // 两个操作数类型不匹配,编译失实    fmt.Println(Autumn == Draft)    // 参数类型不匹配,编译失实    checkArticleState(100)  } 

天然这些景况值的底层的类型都是 int 值,然而当今不管是进行两个不联系类型的胪列值比拟,还是用整型值四肢参数调用 checkArticleState 按次查验著作景况,都会形成编译失实,因为当今我们使用景况值的场地都有了类型物化。

这即是为什么针对失实码、景况机这种触及有限数目景况值的场景下不可用整型常量而是要用胪列的原因。天然 Go 话语里莫得像 Java 相通单独提供一个 enum 暗示胪列的类型,然而我们仍然能通过创建类型别称来杀青胪列。

 

你学会了吗?(#^.^#)