小编Mar*_*oDS的帖子

Ruby自定义错误类:message属性的继承

我似乎无法找到有关自定义异常类的更多信息.

我所知道的

您可以声明自定义错误类并让它继承StandardError,因此它可以是rescued:

class MyCustomError < StandardError
end
Run Code Online (Sandbox Code Playgroud)

这允许您使用以下方法来提高它:

raise MyCustomError, "A message"
Run Code Online (Sandbox Code Playgroud)

然后,在救援时获取该消息

rescue MyCustomError => e
  puts e.message # => "A message"
Run Code Online (Sandbox Code Playgroud)

我不知道的

我想给我的异常一些自定义字段,但我想message从父类继承该属性.我发现阅读关于这个主题@message不是异常类的实例变量,所以我很担心我的遗产将无法正常工作.

谁能给我更多细节呢?如何使用object属性实现自定义错误类?以下是正确的:

class MyCustomError < StandardError
  attr_reader :object
  def initialize(message, object)
    super(message)
    @object = object
  end
end
Run Code Online (Sandbox Code Playgroud)

然后:

raise MyCustomError.new(anObject), "A message"
Run Code Online (Sandbox Code Playgroud)

要得到:

rescue MyCustomError => e
  puts e.message # => "A message"
  puts e.object # => anObject
Run Code Online (Sandbox Code Playgroud)

它会起作用,如果确实如此,这是正确的做事方式吗?

ruby inheritance exception-handling exception custom-exceptions

94
推荐指数
4
解决办法
6万
查看次数

AngularJS模板中的条件逻辑

我有一个看起来像这样的角度模板......

<div ng-repeat="message in data.messages" ng-class="message.type">

    <div class="info">
        <div class="type"></div>
        <div class="from">From Avatar</div>
        <div class="createdBy">Created By Avatar</div>
        <div class="arrowTo">
            <div class="arrow"></div>
            <div class="to">To Avatar</div>
        </div>
        <div class="date">
            <div class="day">25</div>
            <div class="month">Dec</div>
        </div>
    </div>

    <div class="main">
        <div class="content">
            <div class="heading2">{{message.title}}</div>
            <div ng-bind-html="message.content"></div>
        </div>

    </div>

    <br />
    <hr />
    <br />

</div>
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个JSfiddle来显示绑定的数据.

我需要做的是根据数据的内容有条件地显示"from","to"和"arrowTo"div.

这是日志......

  • 如果数据中有"from"对象,则显示"from"div并绑定数据但不显示"createdBy"div.
  • 如果没有"from"对象但是有一个"createdBy"对象,则显示"createdBy"div并绑定数据.
  • 如果数据中有"to"对象,则显示"arrowTo"div并绑定其数据.

或者用简单的英语,如果有来自地址,则显示它,否则显示谁创建了记录,如果有地址,那么也显示.

我已经研究过使用ng-switch,但我认为我必须添加额外的标记,如果没有数据则会留下空div.另外,我需要嵌套切换指令,我不确定这是否有效.

有任何想法吗?

更新:

如果我要编写自己的指令(如果我知道如何!)那么这里有一些伪代码来说明我将如何使用它...

<div ng-if="showFrom()">
    From Template Goes Here
</div>
<div ng-if="showCreatedBy()">
    CreatedBy Template Goes Here
</div>
<div ng-if="showTo()">
    To …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

<system.codedom>/<compilers>在MVC 5中的web.config中做了什么?

我即将将一堆项目从.NET 4.0 + MVC 3迁移到.NET 4.5.2 + MVC5.

为了使这更容易,我创建了一个新的空白MVC项目来比较DLL引用和其他一些东西,如web.config.

在后者中,Visual Studio生成以下条目:

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)

但我不知道这究竟是什么.MVC 3项目不包含这些部分.我的理解是它与Roslyn有关吗?

.net asp.net-mvc codedom web-config asp.net-mvc-5

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

无法绕过复杂的SQL删除查询

情况

我的目标是建立一个年度cronjob,根据年龄从数据库中删除某些数据.在我看来,我拥有Bash和MySQL的强大功能.我开始编写一个bash脚本,但后来让我感到震惊的是,我可以用一个SQL查询完成所有工作.

我本质上更像程序员而且我对数据结构没有太多经验,所以这就是我想要一些帮助的原因.

表/数据结构

此查询的相关表和列如下:

注册:

+-----+-------------------+
| Id  | Registration_date |
+-----+-------------------+
|   2 | 2011-10-03        | 
|   3 | 2011-10-06        | 
|   4 | 2011-10-07        | 
|   5 | 2011-10-07        | 
|   6 | 2011-10-10        | 
|   7 | 2011-10-13        | 
|   8 | 2011-10-14        | 
|   9 | 2011-10-14        | 
|  10 | 2011-10-17        |
+-------------------------+ 
Run Code Online (Sandbox Code Playgroud)

AssociatedClient:

+-----------+-----------------+
| Client_id | Registration_id |
+-----------+-----------------+
|         2 |               2 | 
|         3 |               2 | 
|         3 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql bash

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

如何在XDocument中删除除root之外的节点的xmlns属性

情况

我正在XDocument尝试删除xmlns=""第一个内部节点上的属性:

<Root xmlns="http://my.namespace">
    <Firstelement xmlns="">
        <RestOfTheDocument />
    </Firstelement>
</Root>
Run Code Online (Sandbox Code Playgroud)

所以我想要的结果是:

<Root xmlns="http://my.namespace">
    <Firstelement>
        <RestOfTheDocument />
    </Firstelement>
</Root>
Run Code Online (Sandbox Code Playgroud)

doc = XDocument.Load(XmlReader.Create(inStream));

XElement inner = doc.XPathSelectElement("/*/*[1]");
if (inner != null)
{
    inner.Attribute("xmlns").Remove();
}

MemoryStream outStream = new MemoryStream();
XmlWriter writer = XmlWriter.Create(outStream);
doc.Save(writer); // <--- Exception occurs here
Run Code Online (Sandbox Code Playgroud)

问题

在尝试保存文档时,我得到以下异常:

在同一个start元素标记内,前缀''不能从''重新定义为' http://my.namespace '.

这甚至意味着什么,我该怎么做才能消除那些麻烦xmlns=""

笔记

  • 我确实想保留根节点的命名空间
  • 我只希望xmlns删除特定xmlns的文件,文件中没有其他属性.

更新

我尝试过使用这个问题的答案启发的代码:

inner = new XElement(inner.Name.LocalName, inner.Elements());
Run Code Online (Sandbox Code Playgroud)

调试时,该xmlns …

.net c# xml linq-to-xml xml-namespaces

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

Resharper 10:单元测试输出窗口被破坏

所以我将Resharper升级到版本10(在VS2015上),现在单元测试不再显示我们所有解决方案中的输出:

单位测试输出

这非常烦人,因为我想看看测试失败的原因.现在的解决方法是使用新的"堆栈跟踪浏览器",其结果是可见的.

奇怪的是,当我创建一个全新的解决方案并编写一个简单的测试时,输出窗口仍然可以正常工作!

有任何想法吗?这可能是配置问题吗?

resharper nunit unit-testing resharper-10.0

16
推荐指数
1
解决办法
2326
查看次数

为什么"as"运算符不在C#中使用隐式转换运算符?

我在C#(虚拟代码)中定义了从/到某个类型的隐式字符串转换:

public class MyType
{
    public string Value { get; set; }

    public static implicit operator MyType(string fromString)
    {
        return new MyType { Value = fromString };
    }

    public static implicit operator string(MyType myType)
    {
        return myType.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

在外部库代码的某处,将一个实例MyType作为object参数传递给方法.该方法的一部分看起来像这样的东西:

private void Foo(object value)
{
    // ... code omitted
    var bar = value as string // note that value is an instance of MyType at runtime
    if(bar != null) // false, cast fails
    {
       // ... …
Run Code Online (Sandbox Code Playgroud)

.net c# types casting type-conversion

16
推荐指数
3
解决办法
2082
查看次数

使用HAML包含CSS和javascript标记的简短方法

在HAML中包含javascript或CSS时,通常必须执行以下操作才能包含CSS:

%link{:type => "text/css", :rel => "stylesheet", :href => "/css/mycss.css"}
Run Code Online (Sandbox Code Playgroud)

对于javascript:

%script{:type => "text/javascript", :src => "/js/myscript.js"}
Run Code Online (Sandbox Code Playgroud)

如果HAML没有包括这些标签的短的路我不知道(从课程的源获取内容,而不是内联),省略了必要的typerel属性,因为这些是不变的反正.

请注意,Ruby on Rails通过函数提供此功能,但我不使用rails.

ruby haml

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

Bash:来自命令输出的grep模式

我真的很喜欢bash,但这是学校的主题之一.其中一项练习是:

给出文件"/ etc/passwd"的行号,其中有关您自己的登录信息.

假设USERNAME是我自己的登录ID,我能够以这种方式完美地完成它:

 cat /etc/passwd -n | grep USERNAME | cut -f1
Run Code Online (Sandbox Code Playgroud)

这只是简单地给出了所需的行号(可能有更优化的方式).然而,我想知道,如果有一种方法可以使命令更通用,那么它使用输出whoami来表示grep模式,而无需编写脚本或使用变量.换句话说,要保持它易于阅读的单行命令,如下所示:

 cat /etc/passwd -n | grep (whoami) | cut -f1
Run Code Online (Sandbox Code Playgroud)

对不起,如果这是一个真正的菜鸟问题.

unix bash grep pipe

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

编程一对多关系

所以我很惊讶在谷歌和stackoverflow上搜索不会返回更多结果.

在OO编程中(我使用的是java),你如何正确地实现一对多关系?

我有班级Customer和班级Job.我的申请是为一家为客户完成工作的虚构公司.我当前的实现是这样的,这个Job类与该类没有任何关系Customer,根本没有引用它.本Customer类使用的集合和方法来保存,检索和修改有关已被分配和/或完成客户作业的信息.

问题是,如果我想知道某个特定客户Job已经完成了怎么办?我只发现了相关的这篇文章:http://www.ibm.com/developerworks/webservices/library/ws-tip-objrel3/index.html.

根据作者的实现,我会让Job构造函数接受一个Customer参数,然后存储它以便我可以检索它.但是,我完全不能保证这个模型可以保持一致.没有任何决定可以将作业的相关客户设置为作业不适用的客户,并将作业添加到为其他人完成的客户.任何有关这方面的帮助将不胜感激.

java oop one-to-many relationship

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