标签: primitive

为什么``foo".bar = 42;`在ES6中以严格模式抛出`TypeError`?

根据ES5.1规范,程序"use strict;" "foo".bar = 42;会导致String创建一个对象,分配给它上面的属性,然后抛弃该对象,导致没有可观察到的影响 - 包括任何异常.(可以通过在与Opera 12中的ES5兼容的JS实现中尝试来确认效果的缺失.)

在现代JS实现中,它抛出一个TypeError代替尝试它:

"use strict"; "foo".bar = 42;
Run Code Online (Sandbox Code Playgroud)

我很确定新的行为是由ES6规范强制执行的,但是尽管多次阅读相关部分,但我看不出它被指定的位置TypeError.事实上,关键部分似乎没有变化:

6.2.3.2 PutValue(V,W)#

  1. ReturnIfAbrupt(V).
  2. ReturnIfAbrupt(W).
  3. 如果Type(V)不是Reference,则抛出ReferenceError异常.
  4. base为GetBase(V).
  5. 如果IsUnresolvableReference(V)为真,那么
    • ...
  6. 否则,如果IsPropertyReference(V)为真,那么
    • 一个.如果HasPrimitiveBase(V)为真,那么
      • 一世.断言:在这种情况下,base永远不会为null或未定义.
      • II.将base设置为ToObject(base).
    • 湾 我们成功了吗?base.[[Set]](GetReferencedName(V),W,GetThisValue(V)).
    • C.ReturnIfAbrupt(成功). …

javascript primitive typeerror ecmascript-5 ecmascript-6

25
推荐指数
2
解决办法
1296
查看次数

初始化基元数组

我想知道,

这两种初始化基元数组的方法之间的区别是什么?

int[] arr1 = new int[]{3,2,5,4,1};

int[] arr2 = {3,2,5,4,1};
Run Code Online (Sandbox Code Playgroud)

哪一个更受欢迎?

java arrays primitive

24
推荐指数
3
解决办法
1万
查看次数

Ruby中有原始类型吗?

我是一名刚刚开始学习Ruby的Java开发人员.Ruby有没有原始类型?我似乎找不到它们的清单.如果没有,为什么?

ruby primitive

24
推荐指数
3
解决办法
1万
查看次数

是否可以在Java中使用基本类型(int)作为泛型类型?

具体来说,SortedMap<Vector<String>, int>我得到"在此(int)令牌之后预期的维度." 救命!

java generics primitive types

23
推荐指数
1
解决办法
1万
查看次数

String.Format和string.Format(以及原始数据类型的其他静态成员)之间有什么区别?

据我所知,一个类的任何静态成员像StringInt32也可以从相关的基本数据类型访问.所以,String.Format是一样的string.Format,Int32.MaxValue也是一样的int.MaxValue.

这两种形式有区别吗?对另一个人更喜欢吗?即使它们相同,人们通常认为它们更具可读性吗?

编辑:因为它们是相同的,从人的角度来看是首选吗?你想看String.Formatstring.Format读别人的代码吗?

c# primitive static

23
推荐指数
4
解决办法
5855
查看次数

对象与原语

最近有一位采访者要求定义对象和原语之间的区别.考虑到所有语言都以原语开头,这似乎是一个奇怪的问题.你怎么回答这个问题?

我还应该注意,这次访谈是针对前端开发的,所以他所指的语言(我假设)是JavaScript.

javascript oop primitive object

23
推荐指数
2
解决办法
2万
查看次数

int的哈希码

什么是基本类型的哈希码,例如int?

例如,让我们说num是一个整数.

int hasCode = 0;

if (num != 0) {
  hasCode = hasCode + num.hashCode();
}
Run Code Online (Sandbox Code Playgroud)

java int primitive hashcode

23
推荐指数
3
解决办法
5万
查看次数

原始值的地图替代

我对我的应用程序进行了一些分析,其中一个结果发现堆上大约18%的内存被类型的对象使用Double.事实证明这些对象是Maps 中的值,我不能使用原始类型.

我的理由是原始类型double消耗的内存少于它的对象Double.有没有办法有一个像数据结构的地图,可以接受任何类型的键和基元double作为值?

主要业务是:

  • 插入(可能只有一次)
  • 查找(按键包含)
  • 检索(按键)
  • 迭代

我拥有的典型地图是:

  • HashMap<T, HashMap<NodeData<T>, Double>> graph
  • HashMap<Point2D, Boolean> onSea (虽然不是双倍价值)
  • ConcurrentHashMap<Point2D, HashMap<Point2D, Double>>

全部用于Java 8.

附录

我主要对那些有这些类型的地图解决方案的框架不感兴趣,但对解决这些问题时需要考虑的内容感兴趣.如果您愿意,任何此类框架背后的概念/想法/方法是什么.或者解决方案也可能在另一个层面,其中地图被替换为像@Ilmari Karonen在他的答案中指出的特定模式的对象.

java primitive java-8

23
推荐指数
3
解决办法
1万
查看次数

Java Vector或ArrayList for Primitives

有Java API中的可膨胀的数组类相当于VectorArrayList可以与图元可以使用类(INT,炭,双,等)?

我需要整数快速,可扩展的阵列,它似乎浪费有包裹他们在Integer班级,以便与使用它们VectorArrayList.我的google-fu让我失望了.

java primitive vector arraylist primitive-types

22
推荐指数
4
解决办法
2万
查看次数

为什么这种方法重载不明确?

public class Primitive {
    void m(Number b, Number ... a) {} // widening, autoboxing->widening->varargs

    void m(byte b, Number ... a) {} // unboxing, autoboxing->widening->varargs

    public static void main(String[] args) {
        Byte b = 12;
        Primitive obj = new Primitive();
        obj.m(b, 23);
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经搜索过并发现扩展优先级高于取消装箱,因此在上面的方法调用中,应该调用第一个方法,因为第二个参数对于两者都是相同的.但这不会发生.你可以解释一下吗?

java primitive overloading jdk1.6 wrapper

22
推荐指数
1
解决办法
1334
查看次数