首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AS3:为int、uint或Number声明“未定义”的参数

AS3:为int、uint或Number声明“未定义”的参数
EN

Stack Overflow用户
提问于 2009-05-08 07:39:04
回答 4查看 14.3K关注 0票数 11

我想实现以下逻辑:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function setMyValue (myVar:int = undefined):void
{
    if (myVar == undefined)
    {
        /* Generate a value for myVar */
    }
    else
    {
        /* Use the supplied value for myVar */
    }
}

因此,如果提供了该值,请使用它。如果不是,则生成它。看起来很简单。

问题是AS3不喜欢这样。“undefined”被强制转换为“0”,因此myVar永远不是未定义的。我尝试过使用NaN、null等变体,但都不起作用。我能随手想到的唯一办法就是提供一些‘魔术数字’作为默认值,但这太丑陋了。有人知道更好的解决方案吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-08 09:40:40

UPD (来自我的评论):选择一些魔术数字来表示值的缺失肯定不是一个好的实践,除非你可以完全确定这个魔术数字不会因为某些算术而出现(这通常是真的)。因此,这里最好的方法是使用比int更宽的类型(例如Number),或者将一些标志(Boolean值)传递给函数以及int,以指示实际的值缺失。选择应该取决于您是否想要强调传递的值是整数这一事实的重要性。

如果您对扩展参数类型感到满意,那么您应该使用NaN并执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function setMyValue (myVar : Number = NaN) : void
{
    if ( isNaN(myVar) )
    {
        /* Generate a value for myVar */
    }
    else
    {
        /* Use the supplied value for myVar */
    }
}

这既在技术上更准确,也更稳定。它还允许您在编译时进行强类型,并且不会像使用Object时那样导致奇怪的错误。

请注意,正如其中一个答案所建议的那样,这不适用于intint只有数值,NaN将被强制为0。您将需要使用Number类型。

如果你担心性能--不用担心。使用Number而不是intuint通常是可以的。

更新:如果您想显式地将参数标记为整型,只需使用额外的标志和确切的类型-这将更加清晰。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function setMyValue (isIntValueSupplied : Boolean = false, intValue : int = 0) : void
{
    if ( isIntValueSupplied )
    {
        /* Generate or use a default value of intValue */
    }
    else
    {
        /* Use the supplied value for intValue */
    }
}

另一种选择是使用附加值定义您自己的类型,例如MaybeInt,它保存整数值和一个标志(无论它是否实际初始化)。这样,您就可以清楚地表示值应该是整型的或无值的。然而,这种方法可能有点笨重。

票数 14
EN

Stack Overflow用户

发布于 2009-05-08 07:45:55

生成的值是常量吗?如果是,为什么不简单地将其设为默认值呢?

的问题是AS3不喜欢这样。“undefined”被强制转换为“0”,因此myVar永远不是未定义的。

是的,因为这是int的默认初始化值(对于stringObject,这将是null)。

另一种选择是松散地将参数类型化为Object,或者不指定它(通过使用*),如果它不是int,则稍后将其类型转换为null

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function setMyValue (myVar:Object = null):void
{
    if (myVar == null)
    {
        /* Generate a value for myVar */
    }
    else
    {
        int value = myVar as int;
        /* Use the supplied value for myVar */
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-08-20 11:00:20

我的解决方案就是简单地使用这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(myUint == new uint){ is undefined, act appropriately; }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/840469

复制
相关文章
「python」私有属性和私有方法(扩展知识)
3.代码:子类对象可以通过父类公有方法访问到父类私有属性和方法,在上述代码中并没有动过子类的任何代码。
python自学网
2022/09/07
1.2K0
「python」私有属性和私有方法(扩展知识)
java中构造方法私有化
1. 类中的封装性不光体现在对属性的封装上,实际上方法也是可以被封装的,当然在方法封装中也包含了对构造方法的封装。
用户7886150
2020/12/15
1.1K0
java9-可以在interface中定义私有方法了
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法。只允许我们定义public访问权限的方法、抽象方法或静态方法。但是从Java 9 开始,Interface 接口中允许定义私有方法和私有静态方法。下面我们就来为大家介绍其语法规则,和为什么要有这样的设计。
字母哥博客
2020/10/14
1.7K0
Java中的静态方法不能被子类重写
结论:Java中的静态方法不能被子类重写,实际上,子类的静态方法隐藏了父类的静态方法,因此父类的子类的静态方法同时存在,只不过父类通过类名(或对象名)调用的是父类的静态方法,子类通过类名(或对象名)调用的是子类的静态方法。
用户7886150
2020/12/07
2.3K0
Java中的原子类
在前面的内容中,我们已经学习了CAS的原理,所以对于学习本节来说会非常容易。本节介绍Java中的原子类是java.util.concurrent.atomic包下的对象,他们之所以有原子性的共性,都来源于CAS,可见CAS的重要性。对于原子类变量的操作是不会存在并发性问题的,不需要使用同步手段进行并发控制。它底层自身的实现即可保证变量的可见性以及操作的原子性,一般我们可以使用AtomicInteger,AtomicLong等实现计数器等功能,利用AtomicBoolean实现标志位等功能。
胖虎
2020/12/22
7030
Java中的原子类
关于使用MethodHandle在子类中调用祖父类重写方法的探究
这里直接看Son类的thinking方法(关于为何这样实现,在《深入理解Java虚拟机》读书笔记(七)--虚拟机字节码执行引擎(下)中也解释了)。
Java架构师必看
2021/11/29
9.5K0
java 中 List集合子类特点
目录  List集合常用子类:ArrayList,LinkedList 分别用ArrayList和LinkedList完成储存字符串并遍历 List集合常用子类:ArrayList,LinkedList 1.ArrayList:底层数据结构是数组,查询快,增删慢 2.LinkedList:底层数据结构是链表,查询慢,增删快 分别用ArrayList和LinkedList完成储存字符串并遍历 这里遍历方式有三种 分别是 迭代器  普通for循环 和增强for 这里我采用的是增强for循环 剩下的两种 请友
王同学要努力
2022/11/30
6630
java 中 List集合子类特点
Python中私有变量和私有方法芳
Python中要想定义的方法或者变量只能在类内部使用不被外部使用,可以在方法和变量前面加两个下划线,让其变为私有方法或私有变量。类外部可以通过 ”_类名__私有属性(方法)名“ 访问私有属性(方法)。
王大力测试进阶之路
2022/06/07
1.4K0
在Docker中创建私有仓库
随着创建的镜像日益增多,就需要有一个保存镜像的地方,这就是仓库。目前有两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载镜像,下载公共仓库中的镜像不需要注册,但上传镜像到公共仓库是需要注册的。公共仓库中填写完成仓库的ID号、邮箱以及登录仓库的密码并在邮件中进行激活就可以上传自己的镜像。
星哥玩云
2022/07/28
2.8K0
在Docker中创建私有仓库
在Python中调用Java扩展包HanLP测试记录
最近在研究中文分词及自然语言相关的内容,关注到JAVA环境下的HanLP,HanLP是一个致力于向生产环境普及NLP技术的开源Java工具包,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析(MaxEnt依存句法分析、神经网络依存句法分析)。
IT小白龙
2018/12/12
2K0
在Python中调用Java扩展包HanLP测试记录
Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
在 Java 中如果我们使用 new 关键字调用构造函数对类进行实例化,我们就可以根据在这个类中的修饰符来访问类中定义的非私有方法。但是如果需要在其他类调用私有的方法,就可以利用 Java 中提供的反射来实现。
白鹿第一帅
2022/05/08
2.4K0
Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
【Java】原子类
保证线程安全是 Java 并发编程必须要解决的重要问题。Java 从原子性、可见性、有序性这三大特性入手,确保多线程的数据一致性。
后端码匠
2023/02/27
1.2K0
【Java】原子类
Python类中的私有属性和私有方法
Python是面向对象的语言,在Python里一切皆对象,所以大部分情况下,我们都是通过类的方式来编程。
Python碎片公众号
2021/02/26
3K0
Python类中的私有属性和私有方法
创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法?
问题:为什么创建A对象的时候父类会调用子类方法? 但是:创建B对象父类会调用父类的方法?
zhangheng
2020/04/28
6.3K0
Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
FatherA.__init__(self) # 在子类中调用父类的方法:父类名.方法名称(参数)
授客
2019/09/11
3.2K0
探讨Java中的父子类转化问题
------------------------------------------------------------------------------------------------------------------------------------
用户6182664
2020/05/07
4.2K0
关于子类在继承父类属性和方法的基础上如何增加子类的属性和方法
如何用python程序实现子类在继承父类属性和方法的基础上同时增加子类自己的属性和方法?
算法与编程之美
2023/08/22
1870
关于子类在继承父类属性和方法的基础上如何增加子类的属性和方法
【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )
Groovy 可以对 JDK 中的一些类进行 方法扩展 , 这些 JDK 自带类可以执行额外的扩展方法 ;
韩曙亮
2023/03/30
1.5K0
在Kubernetes集群中扩展CoreDNS
我正在分享在Kubernetes(1.12)中使用CoreDNS(1.2.5)运行的一些测试结果,以便为将CoreDNS调整到您的集群提供一些参考点。除了在默认配置中测试CoreDNS之外,我还测试了CoreDNS并启用了可选的autopath插件。autopath插件是一种优化,有助于透明地缓解由于Kubernetes臭名昭着的ndots:5问题而导致的Pod性能损失。这些测试在启用autopath时量化了内存/性能交易。
CNCF
2019/12/05
2.2K0
在Kubernetes集群中扩展CoreDNS
JAVA父类的静态方法能否被子类重写?
  在编译时所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间,在实例化之前这个方法就已经存在于内存,跟类的对象没什么关系。子类中如果定义了相同名称的静态方法,并不会重写,而应该是在内存中又分配了一块给子类的静态方法,没有重写这一说,只是单纯的名字重复了。
孙晨c
2019/09/29
2.3K0

相似问题

java -允许在子类中扩展静态方法

31

在Java中扩展私有类

00

Java中的私有扩展

48

Java扩展ArrayList,使方法成为私有方法

40

可以在子类中重写私有方法吗?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文