Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布尔类型转换系统(Java)_Java_Javascript_Php_Templates - Fatal编程技术网

布尔类型转换系统(Java)

布尔类型转换系统(Java),java,javascript,php,templates,Java,Javascript,Php,Templates,我正在考虑一个灵活的模板系统类型转换系统。我需要将任何对象类型映射到有意义的布尔值,以简化灵活性和可用性 P>有很多事情要考虑,我们喜欢工作系统,所以我们先看看现有的解决方案。 例如,在PHP中,存在以下布尔值转换系统: 如果不是,则认为(布尔值)为真: false(布尔值) 0(整数、长、短、字节、大整数) 0.0(浮动) “”(字符串) 空数组 空集合或地图 空的 现在的问题是,这是一个好的系统吗?其他系统使用哪些其他规则?这个有什么缺点 我目前也在考虑这个系统: 一切都是假的,除了:

我正在考虑一个灵活的模板系统类型转换系统。我需要将任何对象类型映射到有意义的布尔值,以简化灵活性和可用性

<> P>有很多事情要考虑,我们喜欢工作系统,所以我们先看看现有的解决方案。 例如,在PHP中,存在以下布尔值转换系统:

如果不是,则认为(布尔值)为真:

  • false(布尔值)
  • 0(整数、长、短、字节、大整数)
  • 0.0(浮动)
  • “”(字符串)
  • 空数组
  • 空集合或地图
  • 空的
现在的问题是,这是一个好的系统吗?其他系统使用哪些其他规则?这个有什么缺点

我目前也在考虑这个系统:

一切都是假的,除了:

  • 真(布尔)
  • 1(数字)
  • “真”(字符串)
  • 非空(对象)
  • 非空数组、集合或映射
这也很容易

[更新]

为您提供更多信息。模板系统是用Java开发的,与Web组件相关。它以OGNL这样的脚本语言为特色,它具有调用方法、访问环境提供的特殊功能(如可插入的辅助方法和宏)等附加功能

它使用自定义类型转换系统,只需将结果从一个类型(类)转换为另一个类型(其他类)。因此,对于每个允许的类型转换,它形成一个简单的二维矩阵。一个人可以在一个组合中添加多个转换器,但不能保证使用哪一个

今天,我想到了布尔类替代方案的映射。我自己使用过几种脚本语言,我想知道存在哪些不同的方法,在可读性、表达性和简单性方面,每种方法的优缺点是什么


[/Update]

据我所知,我希望这将对您有所帮助

没有什么不对的。这只取决于你的要求

  • 在某些情况下,-1由指定项所在的对象返回 不在集合列表中
  • 任何编程语言如何遵循一些标准,这些标准从低到低仍在遵循 高级语言,如汇编级
  • 因为所有高级语言在执行/编译期间都转换为机器级语言。在这种情况下,现有系统将在转换高级代码时降低一些复杂性
  • 我推荐的解决方案

    在您的情况下,您可以使用条件运算符,例如

    PHP

    1. $is_tested = ($tested=="Completed") ? TRUE : FALSE; 
    2. $is_tested = ($tested=="TRUE") ? TRUE : FALSE;
    
    JAVA

    1. boolean is_tested = (tested=="Completed") ? TRUE : FALSE; 
    2. boolean is_tested = (tested=="TRUE") ? TRUE : FALSE;
    

    对不起,我没有太多的java知识

    在IBM WEB Sphere中, PHP和Java之间的类型转换

    甚至我建议您参考IBMWeb-SPHERE进行类型转换。 这是一个


    我希望这可以帮助您,并提供更多的想法。

    自动转换为布尔值可以看作是“特殊值意味着失败”成语的变体。这很容易出错,因为不同的操作使用不同的值,因为有效返回值的范围不同。设计一种只考虑一个用例的编程语言总是很危险的

    让我们从第一个示例(php)开始:

    • 0表示false:大多数
      indexOf
      方法(集合、字符串等)返回
      -1
      表示“未找到”,而0是有效值。这同样适用于
      InputStream.read
    • 0.0(float)意味着false:这几乎从来没有用过。对于真正不存在的值,有
      NaN
      ,而零常常是有效的结果,没有理由使其比
      +4.9E-324
      更特殊
    • “”(String)表示false:查看
      BufferedReader.readLine
      :读取文本文件时,空的
      String
      是有效值
      null
      标记文件结束
    • 空数组、空集合或映射:与下一项冲突
    • null表示false:如果
      Collection
      s和
      String
      s不是一个对象,这可能很有用,但在使用子类时更改规则不是一个好主意。当然,在某些情况下,
      null
      是一个有效值,您必须查看异常或特殊错误变量
    关于你的考虑:

    一切都是假的,除了:

    • 真(布尔)
    • 1(数字)
    • “真”(字符串)
    • 非空(对象)
    • 非空数组、集合或映射
    您知道有哪种JavaAPI,其中一个(而且只有一个)是成功的指示器,而其他所有值都是失败的?看起来这条规则根本没用。对于
    “true”
    字符串,情况几乎类似。除了系统属性外,没有人返回
    字符串
    “true”
    ,其中可以只返回布尔值
    true
    。不必谈及区分大小写的问题或问题,为什么不接受“是”等等,它与后来的“非<代码> NUL/<代码>规则冲突。如果在应用自动布尔转换之前将
    字符串
    强制转换为
    对象
    ,会有什么不同?数组/集合规则具有相同的模糊性



    在某些语言中,精心选择的与该语言库同步的自动转换可能会产生令人信服的结果。但我从没见过。所有支持这种转换的语言都有它们的陷阱或“不使用when…”规则。如果您想将Java绑定到您的脚本语言,那么其好处甚至不太可能超过错误风险。Java API设计用于没有自动转换功能的语言。

    例如,JavaScript falsy值为