[ 
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.

Reply via email to