标签: heterogeneous-array

基于某些元素中可能为零的属性对数组进行排序

我有一个对象数组

[<#a star=1  val=1>, <#a star=nil val=3> , <#a star=2  val=2>]
Run Code Online (Sandbox Code Playgroud)

我需要按时间排序数组,然后按val排序

[ <#a star=2  val=2>, <#a star=1  val=1>, <#a star=nil val=3> ]
Run Code Online (Sandbox Code Playgroud)

但是使用sort_by会抛出错误,因为时间是零.

我现在用一种丑陋的方式来排序,但我确信有一个很好的方法可以解决它

starred=[]
@answers.each {|a| (starred << a) if a.starred }
@answers=@answers-starred
starred=starred.sort_by {|a| a.starred }.reverse
@answers=starred+@answers
Run Code Online (Sandbox Code Playgroud)

ruby arrays sorting heterogeneous-array

18
推荐指数
2
解决办法
7044
查看次数

什么是java中的异构对象?

当我使用Object类的泛型类型的任何集合时,我在那种情况下在该集合中存储不同的对象.

我可以说该集合包含异构对象吗?

java heterogeneous-array

9
推荐指数
3
解决办法
1868
查看次数

如何在C++中实现通用指针类型

在C中,可以将数据指针分配给void指针,然后将其转换回原始类型,该数据指针将被恢复.语言标准保证这种转换不会丢失信息.这通常意味着(不一定,但对大多数平台来说都是如此),void指针的大小与数据指针的大小相同.因此,可以指望这些事实使用void指针作为异构类型的一般指针,而void指针本身具有统一的大小和表示.例如,一个有一个void指针数组,其元素指向动态分配的不同类型的对象.构造这样的数组使某些事情变得方便.我的问题是:如何实现类似的东西,C++中的通用指针类型,它符合以下内容:(假设g_pointer是类名)

我刚刚发现了boost :: any,看看它的介绍看起来似乎可能是我想要的,尽管可能不是这样.所以任何熟悉boost :: any的人都欢迎发表评论.

更新:(回复一些评论)

  • g_pointer类型对象应该知道它指向的对象的基础类型.因此,recover方法应始终返回该类型的指针.
  • 一般指针类型,意味着对任何对象的引用,恕我直言,对任何支持面向对象范式的语言都是合理的.

更新:谢谢@Caleth,std :: any很棒.

c++ pointers boost-any heterogeneous-array

4
推荐指数
1
解决办法
702
查看次数

什么是'[]和':在Haskell中?

我在一些地方看过这个'[]':语法,最着名的是在HListHVect等异构列表包中.

例如,异构向量HVect定义为

data HVect (ts :: [*]) where
    HNil :: HVect '[]
    (:&:) :: !t -> !(HVect ts) -> HVect (t ': ts)
Run Code Online (Sandbox Code Playgroud)

在GHCi中,通过扩展TemplateHaskell或者DataKinds,我得到了这个

> :t '[]
'[] :: template-haskell-2.13.0.0:Language.Haskell.TH.Syntax.Name
> :t '(:)
'(:) :: template-haskell-2.13.0.0:Language.Haskell.TH.Syntax.Name
Run Code Online (Sandbox Code Playgroud)

我的印象是这与依赖类型和种类等有关,而不是模板haskell.

搜索引擎,以及hooglehayoo'[]或者':相当糟糕地处理查询,因此问题是:这些'[]':事物的名称是什么?非常欢迎指向文档或教程的指针.

haskell data-kinds heterogeneous-array

4
推荐指数
1
解决办法
134
查看次数