小编mik*_*1aj的帖子

如何从嵌套类访问超类方法?

我希望这段代码解释了这个问题:

class Foo {
    void a() { / *stuff */ }
}

class Bar extends Foo {
    void a() { throw new Exception("This is not allowed for Bar"); }

    class Baz {
        void blah() {
            // how to access Foo.a from here?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可能做错了什么,因为继承可能不应该以这种方式使用.但这是我情况下最简单的方法.而且,除此之外,我只是好奇.可能吗?

java inheritance

8
推荐指数
1
解决办法
2906
查看次数

如何创建一个引入新类型的Haskell函数?

我正在写一个表达式解析器.我已经完成了词法和句法分析,现在我正在检查类型.我有一个像这样的数据结构表达式(简化版):

data Expr = EBinaryOp String Expr Expr
          | EInt Int
          | EFloat Float
Run Code Online (Sandbox Code Playgroud)

现在我需要一个将它转换为新类型的函数,比如说TypedExpr,它还包含类型信息.现在我的主要问题是,这种类型应该是什么样子.我有两个想法 - 使用类型参数:

data TypedExpr t = TEBinaryOp (TBinaryOp a b t) (TExpr a) (TExpr b)
                 | TEConstant t
addTypes :: (ExprType t) => Expr -> TypedExpr t
Run Code Online (Sandbox Code Playgroud)

或没有:

data TypedExpr = TEBinaryOp Type BinaryOp TypedExpr TypedExpr
               | TEConstant Type Dynamic
addTypes :: Expr -> TypedExpr
Run Code Online (Sandbox Code Playgroud)

我从第一个选项开始,但是我遇到了问题,因为这种方法假定你在解析它之前知道表达式的类型(对我来说,在大多数情况下都是如此,但并非总是如此).但是,我喜欢它,因为它允许我使用Haskell的类型系统并在编译时检查大多数错误.

是否可以使用第一个选项?
你会选哪一个?为什么?
每个选项应该有什么问题?

haskell types type-parameter

7
推荐指数
1
解决办法
463
查看次数

如何获取Java分析转储以在mac上创建火焰图?

我想从我的Java应用程序中收集堆栈跟踪,以创建用于分析的CPU Flame Graph.

这与这个问题非常相似:如何从每个样本中的探查器获取完整的堆栈转储以用于火焰图?有2个不同之处:

  1. 我使用Java代码,我需要Java堆栈跟踪
  2. 我在Mac上工作(这意味着没有pref,dtraceOSX上的AFAIK 不支持jstack扩展).

我已经尝试过轻量级java-profilerHonest profiler,但它们似乎都不适用于Mac.我也试过VisualVM,但我无法让它产生我需要的堆栈跟踪转储.

对我来说第一个prioirty是从Java堆栈跟踪生成的火焰图,但是拥有本机调用堆栈也会很棒,因为它可以让我解决I/O问题(甚至可能生成热/冷火焰图).

java profiling visualization stack-trace

7
推荐指数
2
解决办法
2580
查看次数

webpack开发和生产构建模式之间有什么区别?

在Grunt或Gulp中,我过去常常自己定义所有需求,例如:应该只为生产缩小内容,应该只在dev服务器中启用livereload.

的WebPack处理这种自身,通过-d-p选项,即切换装载机minimize模式(最装载机船舶及其相关的minifiers)中,devtool以及类似的东西(我不知道究竟是什么).大多数"只是有效".

但另一方面,有些库具有开发和生产模式.例如,React查看process.NODE_ENV,如果是production,它会禁用propTypes检查(稍后将由minifier剥离为死代码,从而减少包大小).在Webpack中,一种常见的方法是使用DefinePlugin.

问题是,这个插件应该只在生产版本中启用.因此,有些人甚至拥有2个单独的webpack配置.这看起来有点过头了,因为大部分工作都是由webpack完成的.我想避免这种情况.

为了找到更好的解决方案,我想了解当我使用-dor -p选项时究竟有什么变化,以及它如何影响所有的加载器和插件.我没有在任何地方发现它.现有文档只是提到"调试模式"或"监视模式"而没有解释它实际意味着什么.

请注意,我不是要求做这个和那个答案.一个好的,详细的解释将不胜感激.

javascript production-environment webpack

7
推荐指数
1
解决办法
3096
查看次数

在@ngrx/store 4.0中提供root reducer

在@ngrx/store 2.0中,我们可以将根reducer作为函数提供,然后我们在应用程序中拆分逻辑.在我更新到@ngrx/store 4.0之后,我无法再使用此功能,我可以看到reducers需要是reducers的映射,它将在状态下的相同键下创建对象.有没有办法在@ngrx/store 4.0中使用旧的行为在我的状态中,组件知道另一个,我需要能够动态地分割我的状态,我还需要能够将动作分配到我的正确的reducer中自己的方式.app也被分成多个延迟加载的路由,在某些情况下重用来自另一个功能的数据.

 StoreModule.provideStore(reducer, {
      auth: {
        loggedIn: true
      }
    })

StoreModule.forRoot(reducers, {
      initialState: {
        auth: {
          loggedIn: true
        }
      }
    })
Run Code Online (Sandbox Code Playgroud)

我需要reducers成为一个获取完整状态并将其发送到正确的reducer的函数,有没有办法实现这种行为?

ngrx ngrx-store ngrx-store-4.0

7
推荐指数
1
解决办法
3626
查看次数

如何将参数传递给构造函数?

我有一个A类,它由对象B和C组成.如何编写A的构造函数来获取B和C对象?我应该通过值,(const)引用还是指针传递它们?我应该在哪里解除分配?

我想到了指针,因为那时我可以写:

A a(new B(1,2,3,4,5), new C('x','y','z'))
Run Code Online (Sandbox Code Playgroud)

但我不知道这是不是一个好习惯.有什么建议?

c++

6
推荐指数
1
解决办法
2万
查看次数

如何获取Foo <?>对象的<?>值?

(这有点是我上一个问题的后续内容)

我有一个Foo<?>对象,foo.Foo<T>是一个界面.

如何获取隐藏在后面的类型值<?>

请注意,这不是微不足道的,例如foo可以是类的对象Bar<String>,其中Bar<T> implements Foo<T>,或者某些anonyomus类实现接口FloatFoo,其中FloatFoo extends Foo<Float>.我需要一个适用于所有情况的解决方案.

提前致谢 :)

java generics reflection

6
推荐指数
3
解决办法
214
查看次数

在Haskell中使用幻像类型验证程序的正确性

假设我正在使用堆栈机器的代码,它可以在整数和双精度上执行一些简单的操作(推送常量,添加,mul,dup,交换,弹出,转换类型).

现在,我正在编写的程序采用其他语言进行描述,并将其转换为此堆栈计算机的代码.我还需要计算堆栈的最大大小.

我怀疑可以使用Haskell类型检查器来消除一些错误,例如:

  • 从空堆栈弹出
  • 使用int乘法乘以双精度数

我以为我可以声明,例如:

dup :: Stack (a :%: b) -> Stack (a :%: b :%: b)
int2double :: Stack (a :%: SInt) -> Stack (a :%: SDouble)
Run Code Online (Sandbox Code Playgroud)

等等.但后来我不知道如何生成代码并计算堆栈大小.

有可能这样做吗?它会简单/方便/值得吗?

haskell types correctness

6
推荐指数
2
解决办法
521
查看次数

如何在React中获取父组件的名称?

我想为我的一些组件提供很好的错误消息,比如React,例如:

警告:数组中的每个子节点都应该具有唯一的"键"支柱.检查MyComponent的render方法.有关更多信息,请参见fb.me/react-warning-keys.

此消息提供有关错误上下文的一些信息.我知道我可以在调试器中找到它,但我想让我和我的程序员更容易调试.

error-handling reactjs

5
推荐指数
1
解决办法
3448
查看次数

我应该使用JS事件或CSS媒体查询与React响应表吗?

我希望用React制作堆叠的响应表.为避免在小屏幕中水平滚动,每行显示为迷你表格; 请参阅附带的图片.

对于我的用例,td(和可能th)标签中的内容可以是字符串,数字或富节点.

我想在React中实现相同的功能,因为还没有库存在.什么是好方法?


我研究了两种方法.

  1. 第一个是基于Javascript的,就像基于jQuery的StackTable,我从中包含了图像.原来的表到表+桌牌组合,然后使用提供的媒体查询,以显示任何表或卡表.cardtable函数遍历表并从每行生成两列键值.

    这似乎很容易做出反应:渲染表和卡表并使用媒体查询来显示任何一个.但是在多个地方渲染相同的节点(而不是字符串)是安全的吗?th将为实际表头和每一行呈现每个元素.

  2. 第二个使用纯CSS,例如来自CSS Tricks的CSS.

    /* if media query */
    table, thead, tbody, th, td, tr { 
        display: block; 
    }
    td:nth-of-type(1):before { content: "First Name"; }
    td:nth-of-type(2):before { content: "Last Name"; }
    td:nth-of-type(3):before { content: "Job Title"; }
    
    Run Code Online (Sandbox Code Playgroud)

    然而,"内容"似乎是不确定的,我们必须在其他DRY代码库中维护内容的复制粘贴.但我希望React会更容易.


堆叠响应表的示例:

全表:

在此输入图像描述

响应:

在此输入图像描述

media-queries responsive-design reactjs

5
推荐指数
1
解决办法
745
查看次数