我希望这段代码解释了这个问题:
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)
我知道我可能做错了什么,因为继承可能不应该以这种方式使用.但这是我情况下最简单的方法.而且,除此之外,我只是好奇.可能吗?
我正在写一个表达式解析器.我已经完成了词法和句法分析,现在我正在检查类型.我有一个像这样的数据结构表达式(简化版):
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的类型系统并在编译时检查大多数错误.
是否可以使用第一个选项?
你会选哪一个?为什么?
每个选项应该有什么问题?
我想从我的Java应用程序中收集堆栈跟踪,以创建用于分析的CPU Flame Graph.
这与这个问题非常相似:如何从每个样本中的探查器获取完整的堆栈转储以用于火焰图?有2个不同之处:
pref,dtraceOSX上的AFAIK 不支持jstack扩展).我已经尝试过轻量级java-profiler和Honest profiler,但它们似乎都不适用于Mac.我也试过VisualVM,但我无法让它产生我需要的堆栈跟踪转储.
对我来说第一个prioirty是从Java堆栈跟踪生成的火焰图,但是拥有本机调用堆栈也会很棒,因为它可以让我解决I/O问题(甚至可能生成热/冷火焰图).
在Grunt或Gulp中,我过去常常自己定义所有需求,例如:应该只为生产缩小内容,应该只在dev服务器中启用livereload.
的WebPack处理这种自身,通过它-d和-p选项,即切换装载机minimize模式(最装载机船舶及其相关的minifiers)中,devtool以及类似的东西(我不知道究竟是什么).大多数"只是有效".
但另一方面,有些库具有开发和生产模式.例如,React查看process.NODE_ENV,如果是production,它会禁用propTypes检查(稍后将由minifier剥离为死代码,从而减少包大小).在Webpack中,一种常见的方法是使用DefinePlugin.
问题是,这个插件应该只在生产版本中启用.因此,有些人甚至拥有2个单独的webpack配置.这看起来有点过头了,因为大部分工作都是由webpack完成的.我想避免这种情况.
为了找到更好的解决方案,我想了解当我使用-dor -p选项时究竟有什么变化,以及它如何影响所有的加载器和插件.我没有在任何地方发现它.现有文档只是提到"调试模式"或"监视模式"而没有解释它实际意味着什么.
请注意,我不是要求做这个和那个答案.一个好的,详细的解释将不胜感激.
在@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的函数,有没有办法实现这种行为?
我有一个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)
但我不知道这是不是一个好习惯.有什么建议?
(这有点是我上一个问题的后续内容)
我有一个Foo<?>对象,foo.Foo<T>是一个界面.
如何获取隐藏在后面的类型值<?>?
请注意,这不是微不足道的,例如foo可以是类的对象Bar<String>,其中Bar<T> implements Foo<T>,或者某些anonyomus类实现接口FloatFoo,其中FloatFoo extends Foo<Float>.我需要一个适用于所有情况的解决方案.
提前致谢 :)
假设我正在使用堆栈机器的代码,它可以在整数和双精度上执行一些简单的操作(推送常量,添加,mul,dup,交换,弹出,转换类型).
现在,我正在编写的程序采用其他语言进行描述,并将其转换为此堆栈计算机的代码.我还需要计算堆栈的最大大小.
我怀疑可以使用Haskell类型检查器来消除一些错误,例如:
我以为我可以声明,例如:
dup :: Stack (a :%: b) -> Stack (a :%: b :%: b)
int2double :: Stack (a :%: SInt) -> Stack (a :%: SDouble)
Run Code Online (Sandbox Code Playgroud)
等等.但后来我不知道如何生成代码并计算堆栈大小.
有可能这样做吗?它会简单/方便/值得吗?
我想为我的一些组件提供很好的错误消息,比如React,例如:
警告:数组中的每个子节点都应该具有唯一的"键"支柱.检查MyComponent的render方法.有关更多信息,请参见fb.me/react-warning-keys.
此消息提供有关错误上下文的一些信息.我知道我可以在调试器中找到它,但我想让我和我的程序员更容易调试.
我希望用React制作堆叠的响应表.为避免在小屏幕中水平滚动,每行显示为迷你表格; 请参阅附带的图片.
对于我的用例,td(和可能th)标签中的内容可以是字符串,数字或富节点.
我想在React中实现相同的功能,因为还没有库存在.什么是好方法?
我研究了两种方法.
第一个是基于Javascript的,就像基于jQuery的StackTable,我从中包含了图像.原来的表到表+桌牌组合,然后使用提供的媒体查询,以显示任何表或卡表.cardtable函数遍历表并从每行生成两列键值表.
这似乎很容易做出反应:渲染表和卡表并使用媒体查询来显示任何一个.但是在多个地方渲染相同的节点(而不是字符串)是安全的吗?th将为实际表头和每一行呈现每个元素.
第二个使用纯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会更容易.
堆叠响应表的示例:
全表:
响应:
java ×3
haskell ×2
reactjs ×2
types ×2
c++ ×1
correctness ×1
generics ×1
inheritance ×1
javascript ×1
ngrx ×1
ngrx-store ×1
profiling ×1
reflection ×1
stack-trace ×1
webpack ×1