小编Kon*_*lph的帖子

如何使用Reflection获取类的所有属性及其基类(在层次结构中)?(C#)

所以我现在所拥有的是这样的:

PropertyInfo[] info = obj.GetType().GetProperties(BindingFlags.Public);
Run Code Online (Sandbox Code Playgroud)

obj某个对象在哪里.

问题是我想要的一些属性不在于obj.GetType()它们在其中一个基类中.如果我停止调试器并查看obj,我必须挖掘一些"基础"条目以查看我想要获得的属性.是否有一些绑定标志我可以设置让它返回那些或我是否必须递归挖掘Type.BaseType层次结构并对GetProperties所有这些做?

c# reflection getproperties

26
推荐指数
3
解决办法
3万
查看次数

如何在里面使用带引号的字符串?

我有以下字符串,我想将其作为一个进程执行:

Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m "SHARP MX-5500N PS" /h "Windows NT x86" /v 3 /f sn0hwenu.inf

但是,如果存在引号,我无法在C#中插入此字符串以使其进行编译,从而保留所有原始结构.我该怎么解决这个问题?由于字符串中有引号,这有点棘手.

c#

26
推荐指数
4
解决办法
9万
查看次数

绘制多个页面

我正在尝试编写一个facet_wrap在多个页面上绘制ggplot 图的函数.这只是一个黑客,因为这个功能似乎在ggplot2功能待办事项列表中.我做了一些小的计算,找到了我需要的页数,我每页需要的行data.frame数等等.我非常有信心这一切都有效.

pdf(filename)
for (i in seq(num_pages)){
    slice = seq(((i-1)*num_rows)+1,(i*num_rows))
    slice = slice[!(slice > nrow(df.merged))]
    df.segment=df.merged[slice,]
    p <- ggplot(df.segment, aes(y=mean,x=phenotype))
    p <- p + geom_bar(stat="identity",fill="white",colour="black") 
    p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets)
}
dev.off()
Run Code Online (Sandbox Code Playgroud)

我的问题是,通过将它全部包含在这样的for循环中,在pdf()dev.off()函数之间,是for循环似乎不等待ggplot来做它的事情,并且非常快速地通过它的循环并输出PDF无效.

如果我设置i = 1,启动pdf(),在for循环中运行上面的代码,然后设置i=2,然后运行代码,依此类推,直到我感到无聊(i=3)然后关闭设备,结果PDF很棒.

有没有办法在进入下一次迭代之前让for循环等待最后一行完成绘图?

r ggplot2

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

是否可以在Java中使用基本类型(int)作为泛型类型?

具体来说,SortedMap<Vector<String>, int>我得到"在此(int)令牌之后预期的维度." 救命!

java generics primitive types

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

为什么C++ 11类型特征不是别名模板?

类似的问题:为什么type_traits用专门的模板结构而不是constexpr实现? - 但答案不同.

我意识到别名模板不能专门化,因此目前无法直接用于实现类型特征1.然而,这是委员会的一个有意识的决定,据我所知,没有技术理由禁止这样做.

那么将类型特征实现为别名模板,简化它们的语法会不会更有意义?

考虑

 typename enable_if<is_pointer<T>::value, size_t>::type
 address(T p);
Run Code Online (Sandbox Code Playgroud)

 enable_if<is_pointer<T>, size_t> address(T p);
Run Code Online (Sandbox Code Playgroud)

当然,这从Boost.TypeTraits移动时引入了一个突破性的界面变化- 但这真的是一个大问题吗?

毕竟,无论如何都需要修改代码,因为类型驻留在不同的命名空间中,并且由于许多现代C++程序员不愿意打开命名空间,因此将明确限定(如果它将被更改).

另一方面,它极大地简化了代码.鉴于模板元编程经常被深深嵌套,复杂和复杂,显然更清晰的界面是有益的.

我错过了什么吗?如果没有,我会欣赏一个不仅仅是猜测的答案,而是依赖(并且可以引用)对委员会决策理由的了解.


1间接非常好!考虑:

template <typename T> using is_pointer = typename meta::is_pointer<T>::type;
Run Code Online (Sandbox Code Playgroud)

其中meta::is_pointer<T>对应当前std::is_pointer<T>类型.

c++ templates type-traits template-meta-programming c++11

23
推荐指数
1
解决办法
3433
查看次数

序列化是否保留对象标识?

我正在使用Java Serializable接口和ObjectOutputStream序列化对象(到目前为止,这个方法已经足够我的目的).

我的API依赖于某些操作的对象标识,我想知道它是否会被序列化保留.也就是说:如果,对于两个任意对象,a并且ba == b在序列化之前保持,它是否在反序列化后仍然保持?

我发现了一些声称相反的文本- 但他们要么写了一个旧版本的JRE(我只对1.6和1.5感兴趣),要么关注RMI(这与我无关).

有关对象标识的文档不是很明确.一个技术性文章对sun.com提到了ObjectOutputStream使用上的对象缓存,这对我来说才有意义,如果该对象的身份确实保留,但我没有足够的信心,靠这个脆弱的证据.

我已经尝试过(Java 1.6,OS X),发现是的,对象的身份通过序列化保持不变.但我可以从这些结果中推断出来还是不可靠?

对于我的测试,我已经序列化了以下对象图:

C----------+
| b1    b2 |
+----------+
  |      |
  v      v
B---+  B---+
| a |  | a |
+---+  +---+
   \    /
    \  /
     \/
   A----+
   |    |
   +----+
Run Code Online (Sandbox Code Playgroud)

最小的再现代码:

import java.io.*;

public class SerializeTest {
    static class A implements Serializable {}

    static class B implements …
Run Code Online (Sandbox Code Playgroud)

java serialization identity

22
推荐指数
2
解决办法
3109
查看次数

git pull之间的区别.master vs git merge master

没有远程存储库,只有一个具有两个分支的本地存储库.

$ git branch -a
  master
* devel
Run Code Online (Sandbox Code Playgroud)

以下命令在此上下文中是相同的/同义词吗?

$ git pull . master
Run Code Online (Sandbox Code Playgroud)

$ git merge master
Run Code Online (Sandbox Code Playgroud)

更新:

$ git help pull 提供以下信息

SYNOPSIS
   git pull <options> <repository> <refspec>...

DESCRIPTION
   ...
   Note that you can use . (current directory) as the <repository> to pull
   from the local repository — this is useful when merging local branches
   into the current branch.
Run Code Online (Sandbox Code Playgroud)

我实际上不明白为什么这个有用,如本手册中所述.

git git-merge

22
推荐指数
3
解决办法
2万
查看次数

为什么不能使用 static_cast 将数组类型的纯右值转换为相同类型?

#include <iostream>
int main(){
    using type = int[2];
    static_cast<type>(type{1,2});  //#1
}
Run Code Online (Sandbox Code Playgroud)

锵和GCC都抱怨#1是形成不良的,并给予怪异的诊断。

Clang 报告

static_cast from 'int *' to 'type' (aka 'int [2]') is not allowed  
Run Code Online (Sandbox Code Playgroud)

海湾合作委员会报告

invalid 'static_cast' from type 'type' {aka 'int [2]'} to type 'type' {aka 'int [2]'}   
Run Code Online (Sandbox Code Playgroud)

但是,根据expr.static.cast#4

如果存在从 E 到 T的隐式转换序列([over.best.ics]),则表达式 E 可以显式转换为类型T

把一个类型转换成同一个类型不就叫恒等转换吗?
over.best.ics#general-8

如果不需要转换来将参数与参数类型匹配,则隐式转换序列是由身份转换 ([over.ics.scs]) 组成的标准转换序列。

我认为这里的一个关键规则是

转换序列是 [conv] 中定义的隐式转换,这意味着它受对象的初始化规则或单个表达式([dcl.init]、[dcl.init.ref])的引用的控制。

这意味着,假设一个结果对象将由t纯右值初始化。

static_cast from 'int *' to 'type' (aka 'int [2]') is not …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer c++20

22
推荐指数
1
解决办法
426
查看次数

无法分配具有形状和数据类型的数组

我在Ubuntu 18上在numpy中分配大型数组时遇到了一个问题,而在MacOS上却没有遇到同样的问题。

我想一个numpy的阵列形状分配内存(156816, 36, 53806) 使用

np.zeros((156816, 36, 53806), dtype='uint8')
Run Code Online (Sandbox Code Playgroud)

当我在Ubuntu OS上遇到错误时

>>> import numpy as np
>>> np.zeros((156816, 36, 53806), dtype='uint8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
numpy.core._exceptions.MemoryError: Unable to allocate array with shape (156816, 36, 53806) and data type uint8
Run Code Online (Sandbox Code Playgroud)

我在MacOS上没有得到它:

>>> import numpy as np 
>>> np.zeros((156816, 36, 53806), dtype='uint8')
array([[[0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0], …
Run Code Online (Sandbox Code Playgroud)

python numpy data-science

21
推荐指数
5
解决办法
3万
查看次数

Draw curved lines to connect points in matplotlib

So I am trying to plot curved lines to join points, here is the code I am using:-

def hanging_line(point1, point2):
    a = (point2[1] - point1[1])/(np.cosh(point2[0]) - np.cosh(point1[0]))
    b = point1[1] - a*np.cosh(point1[0])
    x = np.linspace(point1[0], point2[0], 100)
    y = a*np.cosh(x) + b

    return (x,y)

n_teams = 4
n_weeks = 4

fig, ax = plt.subplots(figsize=(6,6))

t = np.array([
    [1, 2, 4, 3],
    [4, 3, 3, 2],
    [3, 4, 1, 4],
    [2, 1, 2, 1]
])

fig.patch.set_facecolor('#1b1b1b')

for nw in range(n_weeks): …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

21
推荐指数
2
解决办法
1854
查看次数