天道酬勤,学无止境

casting

flowjs: call of method `join`. Method cannot be called on mixed

问题 假设我有一个恒定的动物,我用它导入 import animals from './animals 假设动物常数是: { hoofed:[ 'horses', 'sheep', 'goats' ], feline: [ 'lions', 'tigers' ], canine: [ 'dogs', 'wolves' ] } 假设我要构造一个对一些动物api的Url查询,编写如下代码: const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '') 现在,此代码生成一串动物,由单词 animal 和空格分隔,然后对其进行 URL 编码并正确匹配目标 API 表面。 然而,FlowJS 拒绝此代码: 13: const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call of method `join`. Method cannot be called on 13

2022-05-17 02:42:09    分类:技术分享    javascript   types   casting   ecmascript-6   flowtype

C# casting from string to int or int32. Possible?

问题 我在博客中看到您可以将字符串转换为 int,并且使用 (int?) 可以更好地处理可能的空值。 在此处查看博客 但是,当我尝试这样做时,Visual Studio 抱怨说无法将类型“int”隐式转换为“字符串”。 真的有可能吗? 还是我做错了什么? 回答1 在文章中提到的 XElement 被强制转换为 int(或 int?),因为 XElement 实现了显式转换运算符。 您不能以这种方式投射字符串。 为此,您必须使用类似 int.Parse 或 int.TryParse 的东西。 回答2 使用 int.Parse() 或者更好的是 int.TryParse() int someInt; if(int.TryParse(aString, out someInt) { // work with the int } else { // handle error } 不同之处在于,如果字符串不是有效整数,则 int.Parse() 会引发异常。 int.TryParse() 如果是有效整数,则返回 true 并将其 out 参数设置为结果,否则返回 false 并且 out 参数的值未定义。 回答3 这篇文章讨论了空合并运算符( ?? ),而不是可为空的( int? 、 bool?等)。 这是一种确保第一个非空值可以分配给变量的机制。 来自 MSDN:

2022-05-16 09:46:08    分类:技术分享    c#   casting

C cast literal char '0' to int 0 (zero), how?

问题 我将如何将文字char '0'转换/转换为int 0 ? IE: char string[] = "0101"; char ch = string[0]; x = magic(ch); if (x) printf("int zero") 回答1 ch = 0; ch = ch - '0';

2022-05-15 18:49:08    分类:技术分享    c   casting   char   int   type-conversion

Getting 'java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Map' even when I'm not casting any Long

问题 我正在尝试使用addChildEventListener()从Firebase检索一些数据,如下所示(代码在Service中): aReference.child(requestID).addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { if (dataSnapshot.getValue() != null) { // error on the line below Map<String, String> nUser = (Map<String, String>) dataSnapshot.getValue(); userNameAU = nUser.get("uName"); Log.d("uName", userNameAU); } ... ... }); 但我收到此运行时错误: java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Map 。 如您所见,我什至没有尝试将其转换为Long ,那为什么会出现此错误? 相同的代码在另一个活动中运行良好。

2022-05-15 18:19:10    分类:技术分享    android   firebase   casting   firebase-realtime-database   classcastexception

PostgreSQL ERROR: invalid input syntax for integer: "1e+06"

问题 完整的错误信息是: ERROR: invalid input syntax for integer: "1e+06" SQL state: 22P02 Context: In PL/R function sample 我正在使用的查询是: WITH a as ( SELECT a.tract_id_alias, array_agg(a.pgid ORDER BY a.pgid) as pgids, array_agg(a.sample_weight_geo ORDER BY a.pgid) as block_weights FROM results_20161109.block_microdata_res_joined a WHERE a.tract_id_alias in (66772, 66773, 66785, 66802, 66805, 66806, 66813) AND a.bldg_count_res > 0 GROUP BY a.tract_id_alias ) SELECT NULL::INTEGER agent_id, a.tract_id_alias, b.year, unnest(shared.sample(a.pgids, b.n_agents, 1 * b.year, True, a.block_weights) ) as pgid FROM a

2022-05-15 12:02:09    分类:技术分享    postgresql   function   casting   integer   plr

Difference between is and as keyword

问题 回答1 是 is 运算符检查对象是否可以转换为特定类型。 例子: if (someObject is StringBuilder) ... 作为 as 运算符尝试将对象强制转换为特定类型,如果失败则返回 null。 例子: StringBuilder b = someObject as StringBuilder; if (b != null) ... 还有相关的: 铸件 转换运算符尝试将对象转换为特定类型,如果失败则抛出异常。 例子: StringBuilder b = (StringBuilder)someObject. 回答2 is OPERATOR C# 中的 is 运算符用于检查对象类型,它返回一个 bool 值:如果对象是相同类型,则返回 true,否则返回 false。 或者“is”运算符用于检查对象的运行时类型是否与给定类型兼容。 对于空对象,它返回 false 例如 if(obj is AnimalObject) { //Then Work } 作为操作员 as 操作符与 is 操作符做同样的工作,但不同之处在于它不是 bool,如果它们与该类型兼容则返回对象,否则返回 null。换句话说,'as' 运算符用于执行兼容之间的转换类型。 例如 Type obj = Object as Type; as over is 的优点在 is 运算符的情况下

2022-05-14 11:02:05    分类:技术分享    c#   casting

How to correctly use converting constructors?

问题 我读到 C++ 编译器能够在提供适合转换构造函数或操作数时隐式转换类型。 我实际上找到了看起来很像这样的示例代码: class Dog{ private: string name; public: Dog(string n):name(n){} //This as the converting constructor } int main(){ Dog d = "rover"; } 每当我运行此代码时,编译器都会抛出一条错误消息: 从 'const char [6]' 转换为非标量类型 'Dog' 请求 Dog d = "rover"; 编译时我添加了编译器选项-std=c++11 ,所以它不应该与 C++ 版本有关,对吧? 我在互联网上找到的示例(至少对我而言)看起来非常相似,所以我不知道这里出了什么问题。 我关于这个主题的输入来自这个视频:转换构造函数和重载运算符 - thenew moston 回答1 您还需要了解您使用的是复制初始化而不是直接初始化。 它们是不同的,您需要了解它们的方式以及它们与显式的关系。 您需要了解转换链是如何工作的,最多涉及一次用户定义的转换。 Dog d1 ("rover"); Dog d2 = "rover"; d2 案例尝试将文字转换为 Dog,然后将其复制(移动)到 d2。 但这将是双重转换: const char

2022-05-14 09:20:21    分类:技术分享    c++   c++11   constructor   casting   type-conversion

Alternatives of static_pointer_cast for unique_ptr

问题 我知道将static_pointer_cast与unique_ptr一起使用会导致所包含数据的共享所有权。 换句话说,我想做的是: unique_ptr<Base> foo = fooFactory(); // do something for a while unique_ptr<Derived> bar = static_unique_pointer_cast<Derived>(foo); 无论如何,这样做会导致两个unique_ptr永远不应该同时存在,所以它是被禁止的。 是的,这绝对是有道理的,这就是为什么确实不存在像static_unique_pointer_cast这样的东西。 到目前为止,如果我想存储指向这些基类的指针,但我还需要将它们强制转换为一些派生类(例如,想象一个涉及类型擦除的场景),我使用shared_ptr是因为我上面已经提到了。 无论如何,我猜测是否有针对此类问题的shared_ptr的替代方案,或者它们是否真的是这种情况下的最佳解决方案。 回答1 #原始指针 您的问题的解决方案是获取原始(非拥有)指针并将其转换 - 然后让原始指针超出范围并让剩余的unique_ptr<Base>控制拥有对象的生命周期。 像这样: unique_ptr<Base> foo = fooFactory(); { Base* tempBase = foo.get()

2022-05-13 08:49:10    分类:技术分享    c++   c++11   casting   shared-ptr   unique-ptr

How is it possible to dynamically cast to a Type that is named in a string with Swift 2.0?

问题 我需要将返回值转换为需要保持动态的特定类型,例如 let cellType = "CellTypeToBeResolved" cell = (tableView.dequeueReusableCellWithIdentifier("myID") as? CellTypeToBeResolved)! 这在 Swift 2.0 中怎么可能? 谢谢! 回答1 你不能这样做,因为 Swift (故意)错过的不是一块而是两块: 你不能把一个字符串变成一个类。 更重要的是,您不能转换为表示为变量的类。 要转换为的类必须是文字类,即它必须在编译时已知。 编译器需要知道这个转换是合法的,而且它需要在编译时知道如何处理这个变量。 如果您希望能够将 MyCoolTableCell 实例消息发送到此单元格,则需要在代码中使用字面值 MyCoolTableCell 名称——不是字符串,也不是包含类型的变量,而是类型本身。 回答2

2022-05-12 11:44:04    分类:技术分享    ios   casting   swift2   dynamic-typing

Cast from unsigned long long to double and vice versa changes the value

问题 在编写 C++ 代码时,我突然意识到我的数字被错误地从double转换为unsigned long long 。 具体来说,我使用以下代码: #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <limits> using namespace std; int main() { unsigned long long ull = numeric_limits<unsigned long long>::max(); double d = static_cast<double>(ull); unsigned long long ull2 = static_cast<unsigned long long>(d); cout << ull << endl << d << endl << ull2 << endl; return 0; } Ideone 现场示例。 在我的计算机上执行此代码时,我有以下输出: 18446744073709551615 1.84467e+019 9223372036854775808 Press any key to continue . . . 我希望第一个和第三个数字完全相同(就像在 Ideone 上一样),因为我确信long double占用 10 个字节,并将尾数存储在其中的 8

2022-05-12 09:58:04    分类:技术分享    c++   casting   floating-point