array.html
来自「perl教程」· HTML 代码 · 共 253 行
HTML
253 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Tie::Array - base class for tied arrays</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Tie::Array - base class for tied arrays</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<li><a href="#caveats">CAVEATS</a></li>
<li><a href="#author">AUTHOR</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Tie::Array - base class for tied arrays</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">package</span> <span class="variable">Tie::NewArray</span><span class="operator">;</span>
<span class="keyword">use</span> <span class="variable">Tie::Array</span><span class="operator">;</span>
<span class="variable">@ISA</span> <span class="operator">=</span> <span class="operator">(</span><span class="string">'Tie::Array'</span><span class="operator">);</span>
</pre>
<pre>
<span class="comment"># mandatory methods</span>
<span class="keyword">sub</span><span class="variable"> TIEARRAY </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> FETCH </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> FETCHSIZE </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
</pre>
<pre>
<span class="keyword">sub</span><span class="variable"> STORE </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span> <span class="comment"># mandatory if elements writeable</span>
<span class="keyword">sub</span><span class="variable"> STORESIZE </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span> <span class="comment"># mandatory if elements can be added/deleted</span>
<span class="keyword">sub</span><span class="variable"> EXISTS </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span> <span class="comment"># mandatory if exists() expected to work</span>
<span class="keyword">sub</span><span class="variable"> DELETE </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span> <span class="comment"># mandatory if delete() expected to work</span>
</pre>
<pre>
<span class="comment"># optional methods - for efficiency</span>
<span class="keyword">sub</span><span class="variable"> CLEAR </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> PUSH </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> POP </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> SHIFT </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> UNSHIFT </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> SPLICE </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> EXTEND </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
<span class="keyword">sub</span><span class="variable"> DESTROY </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span>
</pre>
<pre>
<span class="keyword">package</span> <span class="variable">Tie::NewStdArray</span><span class="operator">;</span>
<span class="keyword">use</span> <span class="variable">Tie::Array</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">@ISA</span> <span class="operator">=</span> <span class="operator">(</span><span class="string">'Tie::StdArray'</span><span class="operator">);</span>
</pre>
<pre>
<span class="comment"># all methods provided by default</span>
</pre>
<pre>
<span class="keyword">package</span> <span class="variable">main</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$object</span> <span class="operator">=</span> <span class="keyword">tie</span> <span class="variable">@somearray</span><span class="operator">,</span><span class="variable">Tie::NewArray</span><span class="operator">;</span>
<span class="variable">$object</span> <span class="operator">=</span> <span class="keyword">tie</span> <span class="variable">@somearray</span><span class="operator">,</span><span class="variable">Tie::StdArray</span><span class="operator">;</span>
<span class="variable">$object</span> <span class="operator">=</span> <span class="keyword">tie</span> <span class="variable">@somearray</span><span class="operator">,</span><span class="variable">Tie::NewStdArray</span><span class="operator">;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>This module provides methods for array-tying classes. See
<a href="../../lib/Pod/perltie.html">the perltie manpage</a> for a list of the functions required in order to tie an array
to a package. The basic <strong>Tie::Array</strong> package provides stub <code>DESTROY</code>,
and <code>EXTEND</code> methods that do nothing, stub <code>DELETE</code> and <code>EXISTS</code>
methods that <code>croak()</code> if the <a href="../../lib/Pod/perlfunc.html#item_delete"><code>delete()</code></a> or <a href="../../lib/Pod/perlfunc.html#item_exists"><code>exists()</code></a> builtins are ever called
on the tied array, and implementations of <code>PUSH</code>, <code>POP</code>, <code>SHIFT</code>,
<code>UNSHIFT</code>, <code>SPLICE</code> and <code>CLEAR</code> in terms of basic <code>FETCH</code>, <code>STORE</code>,
<code>FETCHSIZE</code>, <code>STORESIZE</code>.</p>
<p>The <strong>Tie::StdArray</strong> package provides efficient methods required for tied arrays
which are implemented as blessed references to an "inner" perl array.
It inherits from <strong>Tie::Array</strong>, and should cause tied arrays to behave exactly
like standard arrays, allowing for selective overloading of methods.</p>
<p>For developers wishing to write their own tied arrays, the required methods
are briefly defined below. See the <a href="../../lib/Pod/perltie.html">the perltie manpage</a> section for more detailed
descriptive, as well as example code:</p>
<dl>
<dt><strong><a name="item_tiearray_classname_2c_list">TIEARRAY classname, LIST</a></strong>
<dd>
<p>The class method is invoked by the command <code>tie @array, classname</code>. Associates
an array instance with the specified class. <code>LIST</code> would represent
additional arguments (along the lines of <a href="../../lib/AnyDBM_File.html">the AnyDBM_File manpage</a> and compatriots) needed
to complete the association. The method should return an object of a class which
provides the methods below.</p>
</dd>
</li>
<dt><strong><a name="item_store_this_2c_index_2c_value">STORE this, index, value</a></strong>
<dd>
<p>Store datum <em>value</em> into <em>index</em> for the tied array associated with
object <em>this</em>. If this makes the array larger then
class's mapping of <a href="../../lib/Pod/perlfunc.html#item_undef"><code>undef</code></a> should be returned for new positions.</p>
</dd>
</li>
<dt><strong><a name="item_fetch_this_2c_index">FETCH this, index</a></strong>
<dd>
<p>Retrieve the datum in <em>index</em> for the tied array associated with
object <em>this</em>.</p>
</dd>
</li>
<dt><strong><a name="item_fetchsize_this">FETCHSIZE this</a></strong>
<dd>
<p>Returns the total number of items in the tied array associated with
object <em>this</em>. (Equivalent to <a href="../../lib/Pod/perlfunc.html#item_scalar"><code>scalar(@array)</code></a>).</p>
</dd>
</li>
<dt><strong><a name="item_storesize_this_2c_count">STORESIZE this, count</a></strong>
<dd>
<p>Sets the total number of items in the tied array associated with
object <em>this</em> to be <em>count</em>. If this makes the array larger then
class's mapping of <a href="../../lib/Pod/perlfunc.html#item_undef"><code>undef</code></a> should be returned for new positions.
If the array becomes smaller then entries beyond count should be
deleted.</p>
</dd>
</li>
<dt><strong><a name="item_extend_this_2c_count">EXTEND this, count</a></strong>
<dd>
<p>Informative call that array is likely to grow to have <em>count</em> entries.
Can be used to optimize allocation. This method need do nothing.</p>
</dd>
</li>
<dt><strong><a name="item_exists_this_2c_key">EXISTS this, key</a></strong>
<dd>
<p>Verify that the element at index <em>key</em> exists in the tied array <em>this</em>.</p>
</dd>
<dd>
<p>The <strong>Tie::Array</strong> implementation is a stub that simply croaks.</p>
</dd>
</li>
<dt><strong><a name="item_delete_this_2c_key">DELETE this, key</a></strong>
<dd>
<p>Delete the element at index <em>key</em> from the tied array <em>this</em>.</p>
</dd>
<dd>
<p>The <strong>Tie::Array</strong> implementation is a stub that simply croaks.</p>
</dd>
</li>
<dt><strong><a name="item_clear_this">CLEAR this</a></strong>
<dd>
<p>Clear (remove, delete, ...) all values from the tied array associated with
object <em>this</em>.</p>
</dd>
</li>
<dt><strong><a name="item_destroy_this">DESTROY this</a></strong>
<dd>
<p>Normal object destructor method.</p>
</dd>
</li>
<dt><strong><a name="item_push_this_2c_list">PUSH this, LIST</a></strong>
<dd>
<p>Append elements of LIST to the array.</p>
</dd>
</li>
<dt><strong><a name="item_pop_this">POP this</a></strong>
<dd>
<p>Remove last element of the array and return it.</p>
</dd>
</li>
<dt><strong><a name="item_shift_this">SHIFT this</a></strong>
<dd>
<p>Remove the first element of the array (shifting other elements down)
and return it.</p>
</dd>
</li>
<dt><strong><a name="item_unshift_this_2c_list">UNSHIFT this, LIST</a></strong>
<dd>
<p>Insert LIST elements at the beginning of the array, moving existing elements
up to make room.</p>
</dd>
</li>
<dt><strong><a name="item_splice_this_2c_offset_2c_length_2c_list">SPLICE this, offset, length, LIST</a></strong>
<dd>
<p>Perform the equivalent of <a href="../../lib/Pod/perlfunc.html#item_splice"><code>splice</code></a> on the array.</p>
</dd>
<dd>
<p><em>offset</em> is optional and defaults to zero, negative values count back
from the end of the array.</p>
</dd>
<dd>
<p><em>length</em> is optional and defaults to rest of the array.</p>
</dd>
<dd>
<p><em>LIST</em> may be empty.</p>
</dd>
<dd>
<p>Returns a list of the original <em>length</em> elements at <em>offset</em>.</p>
</dd>
</li>
</dl>
<p>
</p>
<hr />
<h1><a name="caveats">CAVEATS</a></h1>
<p>There is no support at present for tied @ISA. There is a potential conflict
between magic entries needed to notice setting of @ISA, and those needed to
implement 'tie'.</p>
<p>Very little consideration has been given to the behaviour of tied arrays
when <a href="../../lib/Pod/perlvar.html#item___"><code>$[</code></a> is not default value of zero.</p>
<p>
</p>
<hr />
<h1><a name="author">AUTHOR</a></h1>
<p>Nick Ing-Simmons <<a href="mailto:nik@tiuk.ti.com">nik@tiuk.ti.com</a>></p>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?