<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=346&amp;type=atom" />
	<updated>2021-05-05T18:29:46Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=346</id>
		<entry>
			<title type="html"><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3088#p3088" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>BlaZed пишет:</cite><blockquote><p>Значению таблицы присвоить nil, конечно, можно, но это ж все равно что удалить элемент.<br />Другими словами, если мы присвоим значению таблицы nil, то потом никак не определим что присваивали что либо.</p></blockquote></div><p>Да, вы правы, есть такой момент в самом деле. Не обращал на него внимание.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2021-05-05T18:29:46Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3088#p3088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3087#p3087" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Если <strong>y</strong> (т.е. значение) равно nil - то это не проблема. Все работает корректно.</p></blockquote></div><p>Небольшое замечание.<br />Значению таблицы присвоить nil, конечно, можно, но это ж все равно что удалить элемент.<br />Другими словами, если мы присвоим значению таблицы nil, то потом никак не определим что присваивали что либо.<br /></p><div class="codebox"><pre><code>arr={}
arr[1]=3
arr[2]=nil
arr[3]=&quot;nil&quot;
for key,value in pairs(arr) do
  message(&quot;key=&quot;..tostring(key)..&quot; value=&quot;..tostring(value))
end</code></pre></div>]]></content>
			<author>
				<name><![CDATA[BlaZed]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3233</uri>
			</author>
			<updated>2021-05-05T13:58:17Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3087#p3087</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3086#p3086" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>table.insert(arr, 1, {[x] = y})</p><p>Когда y = 0 пишет bad argument #1 to &#039;insert&#039; (table expected, got nil</p></blockquote></div><p>Эта ошибка совсем не про <strong>nil</strong> в <strong>x</strong> или <strong>y</strong><br />Такая ошибка возникает в случае, когда arr не есть таблица. А до вызова указанной строки надо переменной arr присвоить таблицу (например, пустую).</p><p>Вот такой код уже не будет давать указанную ошибку (обратите внимание на первую строку <strong>arr = {}</strong>б в ней суть):</p><div class="codebox"><pre><code>arr = {}

x = 2
y = 1

table.insert(arr, 1, {[x] = y})</code></pre></div><p>Добавлю, что добавление в таблицу здесь можно сделать более простым синтаксисом, нежели <strong>table.insert</strong>, а именно:</p><div class="codebox"><pre><code>arr = {}

x = 2
y = 1

arr[x] = y</code></pre></div><br /><div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>В одном операторе, с разных мест прилетает x и y, только одно значение может быть равно nil, пустое, но его надо учитывать.</p></blockquote></div><p>Если <strong>y</strong> (т.е. значение) равно nil - то это не проблема. Все работает корректно.</p><p>А вот если <strong>x</strong> равно nil - то тут да, проблема есть, т.к. индекс в таблице не может быть равен nil.<br />Я бы с таком случае предложил перед добавлением в таблицу таких значений (когда x равно nil) заменять его на какое-то &quot;нереальное&quot; значение, исходя из бизнес-логики. Ну например, если <strong>x</strong> может быть только положительным по идее в данной части кода - то можно добавить проверку перед вставкой в таблицу:</p><div class="codebox"><pre><code>if x == nil then
  x = -1
end</code></pre></div><p>Там, где потом из таблицы значения читаем (или проверяем наличие) - тоже не забыть такую подмену вставить.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2021-05-05T10:54:02Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3086#p3086</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3085#p3085" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>Вопрос на засыпку, как подружится с nil в массиве?<br />В одном операторе, с разных мест прилетает x и y, только одно значение может быть равно nil, пустое, но его надо учитывать.</p><p>table.insert(arr, 1, {[x] = y})</p></blockquote></div><p>Значение элемента таблицы не может быть nil<br />Как вариант можно перевести nil в строку<br /></p><div class="codebox"><pre><code>if(y==nil)then y=&quot;nil&quot; end</code></pre></div><br /><div class="quotebox"><cite>kaliuga пишет:</cite><blockquote><p>Когда y = 0 пишет bad argument #1 to &#039;insert&#039; (table expected, got nil<br />Можно победить какнибудь?</p></blockquote></div><p>Тут непонятно, y=0 вполне приемлимо</p>]]></content>
			<author>
				<name><![CDATA[BlaZed]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3233</uri>
			</author>
			<updated>2021-05-03T11:46:32Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3085#p3085</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[пишет bad argument #1 to 'insert' (table expected, got nil)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3084#p3084" />
			<content type="html"><![CDATA[<p>Вопрос на засыпку, как подружится с nil в массиве?<br />В одном операторе, с разных мест прилетает x и y, только одно значение может быть равно nil, пустое, но его надо учитывать.</p><p>table.insert(arr, 1, {[x] = y})</p><p>Когда y = 0 пишет bad argument #1 to &#039;insert&#039; (table expected, got nil<br />Можно победить какнибудь?</p>]]></content>
			<author>
				<name><![CDATA[kaliuga]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3281</uri>
			</author>
			<updated>2021-05-01T18:20:42Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3084#p3084</id>
		</entry>
</feed>
