假设我们有一个名为com.example1包含Hello类的包(以及其他类).
然后我们有另一个com.example2包含一个Hello类的包(显然具有不同的行为).
现在让我们假设我们需要com.example1中的每个类和com.example2中的Hello类
import com.example1.*;
import com.example2.Hello;
Run Code Online (Sandbox Code Playgroud)
在这种情况下哪一个被调用?
Hello hello = new Hello();
Run Code Online (Sandbox Code Playgroud)
或者这是否会产生编译错误?
出于好奇,这只是一个理论问题.
由于创建包是为了避免命名冲突,当两个包包含两个具有相同名称的类时会发生什么?
我正在挖掘java,我只是停止使用包.老实说,我认为它的工作方式是愚蠢的,为什么我在这里写它是因为我是愚蠢的白痴,很可能我错了,它有一些东西,在这种情况下,我想知道它.
好吧,交易是:为什么有关键字"包"?(我知道它应该做什么,我在质疑它的存在的必要性)
正如我所发现的,如果你将某个类定义为一个包的一部分,比如包的名称是A,并且该类是在其他类中导入的,并且你想用javac编译类,你必须移动类从包A到同名目录.
如果最后你需要为它创建一个特殊的目录,为什么还要在每个类的开头写"package"呢?为什么文件系统本身不足以对这些类进行分组?为什么它不能像C中的#include一样工作?Javac无论如何都不生成任何二进制文件,为什么要让它更复杂呢?正如我所看到的那样,关键字包除了它之外什么都不做,只会让你编写更复杂的构建xmls ...
我正在开发一个Exception::Class::Nested为其"父"包定义异常(使用)的包.我不希望父包必须使用真正的长名称,并且我不想污染任何其他命名空间.
所以我想要做的是将类名的最后一个元素导出到use异常包的包的名称空间中.
例如,异常包的摘录:
package Klass:Foo::Bar::Exceptions;
use vars qw( @ISA @EXPORT @EXPORT_OK ... );
@ISA = qw( Klass::Foo::Bar Exporter );
use Exception::Class::Nested 0.04 (
'Klass::Foo::Bar::Exceptions::BaseClass' => {
description => 'Base class for exceptions',
'Klass::Foo::Bar::Exceptions::NameError' => {
error => "I don't like your face"
}
}
);
Run Code Online (Sandbox Code Playgroud)
'父母'包裹:
package Klass::Foo::Bar;
use Klass::Foo::Bar::Exceptions;
Klass::Foo::Bar::Exceptions::NameError->throw(error => "D'oh!");
my $e = NameError->new(error => 'Mwahaha!');
Run Code Online (Sandbox Code Playgroud)
我想导出/导入,使得第二调用(的异常类my $e之一)的作品,就好像NameError是在定义Klass::Foo::Bar,但我还没有想通出来呢.
(并且在任何人说'但Exception::Class有一个漂亮的alias东西之前' …
在Delphi 2009中,有一个包已正确安装并且可以工作.
但是,当代码编译时会抛出错误
error E2003: E2003 Undeclared identifier: 'TSomething'
Run Code Online (Sandbox Code Playgroud)
为什么以及如何解决它?(包括.dcu?.pas?)
该项目的构建没有"使用运行时包构建"选项.
我有关于包,模块和语法的问题.当你在同一个文件中访问一个包时,我注意到你会使用像......这样的东西.
package test;
$testVar="This is a test";
#and to access it using..
package main;
print($test::testVar);
Run Code Online (Sandbox Code Playgroud)
或者只是......
package test;
print($testVar);
Run Code Online (Sandbox Code Playgroud)
然而,当我使用这个语法与模块一起使用,发送一个参数时,我应该从打印函数的开头省略$,但在上面我没有.我注意到它不起作用,我不知道为什么.我的材料没有澄清.
require module;
print(package::sub("argument"));
Run Code Online (Sandbox Code Playgroud)
这是为什么?.我糊涂了.
每次我通过Quicklisp安装系统时,我总会发现自己正在搜索基本软件包的名称,普通用户会感兴趣,因为它会导出要播放的"最终产品"API.因此,任何人都需要知道它的名字并在REPL上发出命令:
(use-package :package)
Run Code Online (Sandbox Code Playgroud)
为了在REPL上玩它.
是否有一种快速简便的方法来确定由Quicklisp加载的系统所包含的软件包,而无需搜索过时的文档.
如何从另一个包中将类导入为静态
import Package.class;
Run Code Online (Sandbox Code Playgroud)
可以很好地工作,但是
import static Package.class;
Run Code Online (Sandbox Code Playgroud)
给我一个java.lang.error编译异常
有可能还是我只需要忍受呢?
$ meteor list
...
* New versions of these packages are available! Run 'meteor update' to update.
$ meteor update
Figuring out the best package versions to use. This may take a moment.
This project is at the latest release which is compatible with your
current package constraints.
Run Code Online (Sandbox Code Playgroud)
请参阅下面的简化版本:

似乎list命令之间存在"冲突" ,即说有可用的更新,而update命令找不到任何......这怎么会发生?
我已经为laravel 4.2开发了一个软件包,当你晚上已经注意到laravel 5.0刚刚发布时,我的软件包无法安装在新的laravel项目上
我的包的composer文件如下所示:
"require": {
"php": ">=5.4.0",
"illuminate/support": "4.2.*",
"zofe/rapyd" : "1.3.*"
},
Run Code Online (Sandbox Code Playgroud)
问题:
我应该对项目进行哪些更改以使其与Laravel 5项目兼容?而且我的软件包需要这个软件包https://github.com/zofe/rapyd-laravel尚未为Laravel5发布,是否会阻止我的软件包正确安装?
我以用户ADMIN身份登录并执行PROCEDURE P1来检查和捕获日志.我在创建触发器时遇到错误
PROCEDURE P1
IS
BEGIN
INSERT statement
BEGIN
---
EXCEPTION
WHEN others THEN
error_mgr.record_error();
END P1;
Run Code Online (Sandbox Code Playgroud)
AS ADMIN用户没有足够的priveledge我作为另一个用户EXTRACT登录并创建了包error_mgr
create or replace
PACKAGE BODY error_mgr
IS
PROCEDURE record_error
IS
PRAGMA AUTONOMOUS_TRANSACTION;
l_code INTEGER := SQLCODE;
l_mesg VARCHAR2(32767) := SQLERRM;
BEGIN
INSERT INTO EXTRACT.error_log
(created_on,created_by,errorcode,callstack,errorstack,backtrace,error_info)
VALUES(SYSDATE,USER,l_code,sys.DBMS_UTILITY.format_call_stack,null,
sys.DBMS_UTILITY.format_error_backtrace,l_mesg);
DBMS_OUTPUT.PUT_LINE('ERROR!!');
COMMIT;
END record_error;
END error_mgr;
Run Code Online (Sandbox Code Playgroud)
注意:EXTRACT也是用户名和架构
提取模式中的ERROR LOG表有一个自动生成列id(LOG_ID)所以在EXTRACT模式中我使用的是序列和触发器
SEQUENCE:
CREATE SEQUENCE "EXTRACT"."SEQ_error_log" MINVALUE 1 MAXVALUE
9999999999999999999999999999 INCREMENT BY 1 START WITH 335 CACHE 20 NOORDER
CYCLE ;
Run Code Online (Sandbox Code Playgroud)
触发:
CREATE TRIGGER EXTRACT.BI_error_log
BEFORE INSERT …Run Code Online (Sandbox Code Playgroud) packages ×10
java ×3
perl ×2
common-lisp ×1
database ×1
delphi ×1
delphi-2009 ×1
import ×1
laravel ×1
laravel-5 ×1
meteor ×1
module ×1
namespaces ×1
oracle ×1
perl-module ×1
plsql ×1
quicklisp ×1
triggers ×1