[
https://issues.apache.org/jira/browse/THRIFT-428?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Duxbury closed THRIFT-428.
--------------------------------
Resolution: Won't Fix
> Restrict map keys to integers and strings only
> ----------------------------------------------
>
> Key: THRIFT-428
> URL: https://issues.apache.org/jira/browse/THRIFT-428
> Project: Thrift
> Issue Type: Improvement
> Components: Compiler (General)
> Affects Versions: 0.1
> Reporter: Chad Walters
>
> For the sake of better interoperability, particularly with PHP, it would be a
> good idea to restrict map keys to be only of integer and string type.
> Handling of structures and containers as key types is a pretty mixed bag
> across the main supported languages. The current state of affairs is:
> C++: Containers with containers as keys (with no structs involved) are fine.
> If a struct (or container of structs, or container of containers of structs,
> etc.) is to be used as a map key, it must have a comparison (less than)
> operator defined.
> Java: Containers and structs can be used as map keys or set elements. It is
> not entirely safe, but this is the Java convention (trust the application
> developer). structs cannot be used in sorted containers. Using structs as
> map keys without an optional dependency (apache commons lang) is very
> inefficient because structures all have a hashCode of 0 without it. (Can
> binaries be used as keys?)
> Python: Using mutable containers as map keys is impossible. Using mutable
> structures as map keys is possible, but unsafe and goes against a very strong
> Python convention. We are pretty close to having implementations of
> immutable containers and structures, but the code will probably end up being
> pretty bulky or pretty skeevy.
> Ruby: (Maybe someone can fill in more details?) Structures as map keys are
> very inefficient because all structures have a hash code of zero.
> PHP: Using structures or containers as map keys (or set elements) in PHP is
> currently impossible, and might be impossible to implement. Only strings and
> numbers can be associative array keys in PHP.
> Erlang: Any struct or container can be a map key or set element. There are
> no safety or performance issues. Erlang is pretty cool like that.
> I'd like us to consider doing this for 0.1 so it's in there for the first
> official Apache release.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.