标签: extending

尝试编译C扩展模块时缺少Python.h.

我正在按照本教程学习如何使用C\C++代码扩展Python.

名为"使用GCC for Microsoft Windows构建扩展模块"的部分对我失败,出现以下错误:

fatal error: Python.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

名为"使用Microsoft Visual C++构建扩展模块"的部分也失败,但出现类似的错误:

fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

c++ python compilation extending

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

Erlang:进程的简单pubsub - 我的方法好吗?

免责声明:我对Erlang和OTP很新.

我想在Erlang/OTP中使用一个简单的pubsub,其中进程可以在某个"集线器"订阅并接收发送到该集线器的消息副本.

我知道gen_event,但它在一个事件管理器进程中处理事件,而我希望每个订阅者都是一个独立的自治进程.而且,我无法理解gen_event处理程序的监督.不幸的是,谷歌的结果充满了XMPP(Ejabberd)和RabbitMQ链接,所以我没有发现任何与我的想法相关的内容.

我的想法是这样的pubsub模型无缝映射到监督树.因此,我想扩展主管(gen_server引擎盖下),以便能够向其所有孩子发送演员信息.

我在快速而肮脏的自定义"调度程序"行为中攻击了这个:

-module(dispatcher).
-extends(supervisor).
-export([notify/2, start_link/2, start_link/3, handle_cast/2]).

start_link(Mod, Args) ->
    gen_server:start_link(dispatcher, {self, Mod, Args}, []).

start_link(SupName, Mod, Args) ->
    gen_server:start_link(SupName, dispatcher, {SupName, Mod, Args}, []).

notify(Dispatcher, Message) ->
    gen_server:cast(Dispatcher, {message, Message}).

handle_cast({message, Message}, State) ->
    {reply, Children, State} = supervisor:handle_call(which_children, dummy, State),
    Pids = lists:filter(fun(Pid) -> is_pid(Pid) end,
                 lists:map(fun({_Id, Child, _Type, _Modules}) -> Child end,
                           Children)),
    [gen_server:cast(Pid, Message) || Pid <- Pids],
    {noreply, State}.
Run Code Online (Sandbox Code Playgroud)

然而,虽然一切看起来一切正常(儿童接收消息并在失败时无缝重启),但我想知道这是个好主意.

请某人批评(或批准)我的方法,和/或推荐一些替代方案吗?

erlang erlang-otp extending publish-subscribe

9
推荐指数
2
解决办法
3491
查看次数

数组更改侦听器

可能重复:
Javascript - 如何扩展Array.prototype.push()?

如何通知(运行预定义的函数)对已注册数组的任何更改(或至少添加或删除元素)?我尝试过使用原型.我不想因为没有提供我自己的一些代码示例而被责骂.因此,这里是我怎么会喜欢使用它.

var myArray = [];
myArray.bind(function() {
    console.log('wtf'); // Wed Thu Fri and what were you thinking?
});
Run Code Online (Sandbox Code Playgroud)

我不需要矫枉过正.我基本上知道我将使用的Array函数范围(push,pop,splice以及其他几个).这是使用骨干MVC的一种方式.我想在数组上运行逻辑,然后相应地突出显示视图.但该视图已附加到集合中.对该集合的任何更改都会在视图中重新呈现实际的DOM.我不希望这样.我想简单地想要在视图中为CSS添加或删除类到相应的DOM.

javascript arrays listener extending

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

在Doctrine PHP Symfony中重写Doctrine_Record(sfDoctrineRecord)实例方法

我的背景是在Propel中,所以我希望在Doctrine_Record(sfDoctrineRecord)中覆盖一个神奇的getter是一件简单的事情,但是我得到了一个Segfault或者覆盖方法被简单地忽略了,而不是超类.

https://gist.github.com/697008eaf4d7b606286a

class FaqCategory extends BaseFaqCategory
{

  public function __toString()
  {
    return $this->getCategory();
  }

  // doesn't work
  // override getDisplayName to fall back to category name if getDisplayName doesn't exist
  public function getDisplayName() {

    // also tried parent::getDisplayName() but got segfault(!)
    if(isset($this->display_name)) {
      $display_name = $this->display_name;
    } else {
      $display_name = $this->category;
    }

    return $display_name;

  }

}
Run Code Online (Sandbox Code Playgroud)

在Doctrine_Record实例上扩展/覆盖方法的正确Doctrine方法是什么(通过sfDoctrineRecord扩展Doctrine_Record)?这必须是可行的......或者我应该查看模板文档?

谢谢,Brian

php doctrine symfony1 extending getter-setter

8
推荐指数
3
解决办法
4630
查看次数

将Javascript getters/setter复制到另一个原型对象

// Base class
var Base = function() {
    this._value = 'base';
};
Base.prototype = {
    constructor: Base,
    // By function
    getValue: function() {
        return this._value;
    },
    // By getter
    get value() {
        return this._value;
    }
};

// Sub class extends Base
var Sub = function() {
    this._value = 'sub';
};
Sub.prototype = {
    constructor: Sub
};
// Pass over methods
Sub.prototype.getValue = Base.prototype.getValue;
Sub.prototype.value = Base.prototype.value;

// ---

var mySub = new Sub();
alert(mySub.getValue()); // Returns 'sub'
alert(mySub.value);      // Returns …
Run Code Online (Sandbox Code Playgroud)

javascript getter setter extending prototype-programming

8
推荐指数
3
解决办法
5489
查看次数

如何在WooCommerce 3中添加自定义工作运输方法

我已经成功创建了一种新的运输方式,并为其提供了对运输区域的支持.但是,当我从下拉列表中选择方法将其添加到区域时,它不会出现在"选定的方法列表"中.

我录制了一个截屏gif来演示:

截屏gif

我不能为我的生活弄清楚为什么它不起作用.如果我选择其中一种标准方法(Screencast GIF),它可以正常工作

任何人都知道这里发生了什么以及如何让它发挥作用?

这是我在这个官方帖子中提供的代码: Shipping Method API:

if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {

    function request_a_shipping_quote_init() {
        if ( ! class_exists( 'WC_Request_Shipping_Quote_Method' ) ) {
            class WC_Request_Shipping_Quote_Method extends WC_Shipping_Method {
                /**
                 * Constructor for your shipping class
                 *
                 * @access public
                 * @return void
                 */
                public function __construct() {
                    $this->id                 = 'request_a_shipping_quote'; // Id for your shipping method. Should be uunique.
                    $this->method_title       = __( …
Run Code Online (Sandbox Code Playgroud)

php wordpress shipping extending woocommerce

8
推荐指数
3
解决办法
7523
查看次数

Javascript原型扩展基类无法从原型类访问基类属性/方法

我创建了一个javascript类TkpSlider,受益于这个w3schools页面.(JSFiddle)

var TkpSlider = function (args) {
    args= args|| {};
};

var mainSwiper = new TkpSlider();
Run Code Online (Sandbox Code Playgroud)

我已经扩展了这个以添加一些从该页面启发的滑动功能,以便我可以在用户滑动时使用滑块.(JSFiddle)

var TkpSwiper = function (args) {
    TkpSlider.call(this, args);
};

TkpSwiper.prototype = Object.create(TkpSlider.prototype);

var mainSwiper = new TkpSwiper();
Run Code Online (Sandbox Code Playgroud)

我将代码分开,所以我不会在以后从基本代码和任何其他函数中感到困惑.但是对于OOP,我必须通过为它创建一个新名称来扩展TkpSwiper,但我想找到另一种使用相同名称TkpSlider的方法.

我看到了这篇文章,并试图在这个JSFiddle(下面的代码段)中使用prototype来扩展TkpSlider.问题是我无法从子类访问基类的公共方法.我测试过的博客中的示例javascript,我必须遗漏我的代码.任何人都可以有所了解吗?谢谢.

var TkpSlider = function (args) {
	args= args|| {};
    //private variable
     var btnPrev = args.btnPrev || "tkp-slide-btn-prev";//class for previous button (default: "tkp-slide-btn-prev")
    var btnNext …
Run Code Online (Sandbox Code Playgroud)

javascript oop prototype base-class extending

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

扩展Grails插件的功能

我想知道,如果有可能,并且有一种通用的方法来扩展grails插件的功能.

我最近安装了可评论的插件,但需要对它进行一些修改.由于代码不与项目一起存储(但在用户目录中),如果我修改它,在更新插件(或安装其他某台机器的项目)后,这些更改将丢失.

有人有什么想法吗?

谢谢,尼古拉斯

grails plugins extending

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

使用选项"-Xinject-code -extension"使用XJC + xsd + jxb插入代码

林"试图使用扩展'-Xinject码’XJC一些代码添加到我的生成的类.对于以下简单的xsd架构......

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="MyList" >
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="MyItem" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="MyItem">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:int"/>
        <xs:element name="name" type="xs:string"/>
      </xs:sequence>
   </xs:complexType>
  </xs:element>

</xs:schema>
Run Code Online (Sandbox Code Playgroud)

..我已经关联了以下绑定:

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings 
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:ci="http://jaxb.dev.java.net/plugin/code-injector"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
jxb:extensionBindingPrefixes="ci "
jxb:version="2.1"
>

<jxb:bindings schemaLocation="test.xsd">
    <jxb:bindings node="/xs:schema/xs:element[@name='MyItem']">
        <ci:code>
            @Override
            public String toString() { return this.getName();}
        </ci:code>
    </jxb:bindings>
</jxb:bindings>

</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)

运行xjc会产生以下输出:

$ xjc -target 2.1 -verbose -Xinject-code -extension -d . -p generated -b test.jxb test.xsd …
Run Code Online (Sandbox Code Playgroud)

java jaxb xjc extending

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

JavaScript:扩展元素原型

我已经看到很多关于扩展Element的讨论.据我所知,这些是主要问题:

  • 它可能与其他库冲突
  • 它为DOM例程添加了未记录的功能
  • 它不适用于旧版IE
  • 它可能与未来的变化相冲突

给定一个不引用其他库的项目,文档会发生变化,并且不会给历史浏览器带来任何影响:

是否有任何技术原因不扩展Element原型.以下是有用的示例:

Element.prototype.toggleAttribute=function(attribute,value) {
    if(value===undefined) value=true;
    if(this.hasAttribute(attribute)) this.removeAttribute(attribute);
    else this.addAttribute(attribute,value);
};
Run Code Online (Sandbox Code Playgroud)

在没有提供合理解释的情况下,我已经看到太多关于扩展原型的弊端的评论.

注1:上面的例子可能太明显了,toggleAttribute将来可能添加的方法也是如此.对于讨论,想象它被称为manngoToggleAttribute.

注2:我已经删除了该方法是否已存在的测试.即使这种方法已经存在,覆盖它也更容易预测.无论如何,我假设这里的重点是该方法尚未定义,更不用说实现了.这就是重点.

javascript prototype element extending

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